Issue-2017.08.21

Тел. +7 904 707-11-25
E-mail: yudenisov{at}aport2000.ru

Категория «16+»

Мой сайт   Визитка на Мемиане

[Выпуск 21.08.2017]

[31.08.2017 18:09:37]

Сегодня я нашёл способ, как программировать на языке Си Шарп, абсолютно его не зная и не изменив ни одной строчки кода! Всё по порядку.

Передо мной возникла задача обновления кода программы BlackBBS alpha, поскольку оригинальный код не запускался на Windows Server 2016. Попутно выяснилось, что нужно сменить версию .Net Framework с 4.0 на 4.5.2, поскольку для старой сложно было найти обновление пакетов ля Visual Studio 2017 Community Edition. Решение было найдено.

Первым делом я открыл решение Visual Studio и обновил версию sln файла. После этого я изменил версию .Net Framework для каждого пакета. Для этого нужно: 1) щёлкнуть правой клавишей мыши на файле проекта с расширением .csproj, 2) Выбрать «Свойства» -> «Выгрузить проект» и дождаться появления рядом с ним надписи «Недоступен» 3) Открыть файл .csproj в текстовом редакторе (XML файл), найти в нём упоминание о версии библиотеки .NET (что-то вроде TargetFrameworkVersion) и сменить её цифровой название, 4) Сохранить изменения в файле, вернуться в VisualStudio 5) Опять щёлкнуть правой клавишей мыши на этом файле и выбрать пункт «Перегрузить проект». Изменив так все проекты одного решения, можно начинать менять версии компонентов.

Версии компонентов меняются следующим образом:

1-й Способ, с которого надо начать, но он не панацея.

  1. В меню «Проект» выбрать пункт «Пакеты NuGet»;
  2. В открывшемся диалоговом окне, в строку «Поиск пакетов» введите имя пространства имён вашего файла .cs. Система найдёт наиболее подходящий пакет, содержащий это расширение;
  3. На всякий случай сверьтесь с онлайн-справкой по пакету, чтобы не установить никакого лишнего «мусора»;
  4. Выберите кнопку «Установить». Будет предпринята попытка установки последней версии пакета. Когда пакет установится, на его изображении в правом верхнем углу появится зелёная галочка;
  5. В случае если пакет не установился из-за нарушения зависимостей, попробуйте установить более раннюю версию этого пакета, выбрав версию из списка рядом с кнопкой установить. В этом случае после установки появится белая стрелка на синем фоне;
  6. Иногда таким способом установить пакет не удаётся, или его установка не возымеет эффекта. Тогда попробуйте второй способ.

2-й Способ, который нужно использовать только после первого.

  1. Перейдите в окно свойств решения, найдите в нём свой проект и просмотрите раздел ссылки данного проекта;
  2. В случае если ссылки выделены жёлтым треугольником, их надо переустановить или удалить;
  3. Вернитесь к пункту 3 первого способа, и посмотрите, какому пакету должна соответствовать неопознанное пространство имён в Ваших .cs файлах. Проверьте, есть ли этот пакет в дереве ссылок данного пакета;
  4. Если ссылки нет, то добавьте её. Для этого щёлкните правой клавишей мыши по корню дерева ссылок, и выберите пункт «Добавить ссылку»;
  5. В полученном диалоговом окне наудите нужный пакет, просмотрев ВСЕ пункты дерева. Их там пять, не считая ветвей. Найдя нужный пакет, отметьте его галочкой и добавьте ссылку, нажав на «Ok»;
  6. Иногда этой ссылки в списках найти не удаётся. Тогда используйте третий способ.

3-й способ. Добавление модулей в пакет из внешних библиотек.

  1. Откройте консоль операционной системы;
  2. Откройте сайт http://nuget.com;
  3. На сайте найдите нужный пакет, указав в поиске точное или приблизительное имя;
  4. В командной строке наберите

>Nuget install «точное имя найденного пакета»

и нажмите Enter

  1. Если Вы правильно указали имя пакета, то скачаются все его основные версии вместе с зависимостями. Файлы будут сохранены в папку %USERPROFILE%\«название пакета». В этой папке всегда будет папка «lib», а в ней – файл библиотеки в формате .dll или другом;
  2. Именно этот файл надо выбрать в пункте 5 второго способа, когда Вы ищете модуль. Для этого нужно выбрать «Обзор» -> «Обзор…», а далее в диалоговом окне – файл, и нажать «Ok»;
  3. Полученный файл появится в списке «Обзор» -> «Недавние». Там его можно будет отметить галочкой и загрузить как ссылку в соответствующее окно.

Как видите, это работа для низкоквалифицированного персонала, немного знающего английский язык. Сложность начинается тогда, когда нужно загрузить нестандартный пакет, к которому нет описания. По закону подлости найти описание пакета в NuGet гораздо сложнее, чем найти и инсталлировать сам пакет. И это печально… 🙁

[30.08.2017 18:58:55]

До этого я занимался установкой пакетов на свой сервер.

Для начала я из репозитория chocolatey загрузил программу для создания служб Windows из приложений nssm. С её помощью я перевёл в службы программы nginx и php_cgi.

Затем я установил программы tftp (TFTP Server) и VisualSVN (Subversion SVN Server).

Затем я установил и настроил программу stunnel для организации выделенного туннеля для серверов. Дело в том, что такие программы, как blat и hMailServer не могут устанавливать зашифрованного соединения с SMTP серверами для отправки писем. Именно для этого приходится реализовать туннели, которые применяют на входе один протокол, а на выходе обращаются к другому протоколу на удалённой машине. Настроил протоколы для Gmail, Mail.Ru и Яндекс.Почта. Настройка в общем тривиальная, нужно указать локальные и удалённые адреса с портами. Но дополнительно нужно указать на отсутствие задержки на сокете, что опущено в файле примера, а также убрать из файла примера конфигурации подстановку персонального сертификата сервера – это будет лишним. После чего я проверил отправку почты программой blat – всё работает.

Третьим пунктом была установка программы hMailServer. Программа устанавливается из репозитория chocolatey, настройка базы данных, смена пароля для администратора (он по умолчанию пустой) не составляет сложностей. Более сложно – это создание аккаунтов пользователей, нужно правильно указывать имя и домен. Самым сложным же оказалось добавление доменной зоны для сервера. Дело в том, что я создаю сервер на динамическом IP, поэтому не могу использовать многие средства борьбы со спамом. В частности,я не могу настроить зону обратного просмотра, для этого нужен статичный адрес. Также я не могу задать сервер с помощью тега A, приходится вместо него указывать NS. В результате на IP адрес сервера будет «косвенно» указывать запись NS в домене, а на сам сервер – запись MX. И если записи NS обновляются быстро, то на обновлении записи MX у меня ушло много времени. По идее, надо ещё добавить записи TXT, но я этого делать не стал, ведь хостинг у меня «не настоящий».

Создав таким образом почтовый сервер и изменив таким образом записи на своём DNS сервере, я смог отправить письмо самому себе. Однако получить письмо с почтовых ящиков Gmail и Mail.Ru мне не удалось, с ошибкой 505 not resolved. Подключившись к их DNS серверу, я не нашёл своего хостинга в записях DNS сервера этих почтовых служб. Оказывается, для того, чтобы эти службы могли отправлять почту на вновь созданный ящик, я должен пройти регистрацию домена на их сервисе postmaster. Это мне удалось не полностью, из-за недоступности некоторых средств подтверждения владения доменом.

Под конец я задокументировал все изменения, и занялся программированием. 🙂

[[То, что нельзя требовать]]

при заказе дешёвого хостинга в студии «Киски-и-Riski»

Студия «Киски-и-Riski» (основатель Юрий А. Денисов) произвела поистине революцию в изготовлении сайтов для предпринимателей г. Саратова, и обвалила цены на этом рынке. Она предлагает сайты по цене в 50 раз(!) меньше, чем у ближайших конкурентов. Это достигается за счёт собственных разработок и Ноу-хау владельца студии, и правильной маркетинговой политикой. В студии считают, что рядовому пользователю, заказывающему сайт, не нужны следующие дорогостоящие опции:

  1. Персональный дизайн. Достаточно разместить оригинальные логотипы клиента;
  2. Услуги контент-менеджера. Предполагается, что наполнять сайт контентом будет сам клиент;
  3. Дорогая SEO-оптимизация. Клиенты, как правило, не имеют рекламного бюджета даже для покупки базового комплекта контекстной рекламы;
  4. Персональные скрипты и формы. Предполагается, что стандартного функционала и расширений сайтовых «движков» достаточно для удовлетворения потребностей клиента на своём сайте.

Чтобы понять, как отказ от такого рода услуг позволяет экономить студии, автор приводит порядок затрат в год по каждому пункту:

  1. Отказ от дизайна. Экономия до $3000 на одного клиента;
  2. Отказ от контент-менеджера. Экономия до $5000 на клиента;
  3. Отказ от SEO и рекламной кампании. Экономия до $50000 на проект;
  4. Отказ от программирования. Экономия до $5000 за проект.

Реальная экономия может быть меньше, указаны округлённые суммы из максимальных бухгалтерских затрат.

Но, соответственно, меняются и максимальные требования заказчика к созданным сайтам. Я помню, один клиент, покупающий компьютер, очень удивился, узнав, что на офисном компьютере, по хорошему, нельзя смотреть ролики с YouTube. Дело в том, что на таких компьютерах не обязательно запускать Flash player… 🙂 Поэтому автор заранее указывает, какие опции будут недоступны при заказе сайта за 500 рублей:

  1. Любые стоковые изображения, фотографии, видео, иллюстрации, орнаменты, чертежи, кнопки, которые не предоставил заказчик и которые не выложены в открытый доступ;
  2. Любой пользовательский дизайн кнопок, пунктов меню, компоновки блоков сайта, надписей, шрифтового оформления, оформления слайдеров, галерей, видеоплееров, не предусмотренные стандартными или расширенными шаблонами;
  3. Любые рекламные баннеры, формы, всплывающие окна, формы обратной связи, формы обратного звонка, инфографика, интерактивные элементы, требующие программирования;
  4. На сайте будут размещены только тексты, которые предоставил клиент. Никакая стилистическая, смысловая, SEO-обработка текста производиться не будет. Не будут даже корректироваться орфографические ошибки, тексты не будут укорачиваться или дописываться, чтобы «вписаться» в дизайн шаблона.
  5. Любая разработка новых форм, шаблонов, иллюстраций, монтажа видео и рекламы, кроме стандартных средств, встроенных в шаблоны;
  6. При стандартной SEO оптимизации будут только созданы и заполнены рекламные аккаунты и аккаунты поисковиков, дописаны ключевые слова на каждую страницу, произведётся генерация файлов Sitemap.xml и Robots.txt и запущена индексация сайтов по имеющемуся контенту. Никакой оптимизации по распространённым ключевым словам, вроде «деньги сразу», «торговля на рынке Forex», «юридические и бухгалтерские услуги», «услуги сантехника», производиться не будут.

В результате страницы в поиске можно будет найти:

  • По названию фирмы и организации;
  • По запатентованным фирмой названиям;
  • По ключевым конкурентным преимуществам, явно указанным в тексте;

Студия работает по предоплате, и не делает скидки на базовые услуги. Конечно, студии можно заказать работы и посложнее, она с ними справится, но… Тогда максимальный порядок цен смотрите в разделе «Экономия» данной статьи. В любом случае уточняйте расценки у представителя студии.

[[Борьба с неожиданными блокировками]]

После удаления учётной записи группы «Все» из части моих каталогов у меня на компьютере начались «странные вещи». Во-первых, не сразу, но перестала запускаться программа Microsoft Outlook. А в ней у меня хранились регистрационные данные. Не помогла даже жёсткая переустановка Microsoft Office! Пришлось мне перейти на почтовый клиент Mozilla Thunderbird. Всё бы хорошо, но этот клиент также не импортирует в офлайне почтовые базы Microsoft Outlook. Поэтому мне пришлось скачать с торрентов программу PST File Viewer, специально предназначенную для офлайн доступа к почтовым базам данных Microsoft Outlook и чтения их в режиме просмотра папок Microsoft Outlook. В общем всем рекомендую эту программу, кому необходим офлайн доступ к базам данных этого почтового клиента.

Следующая блокировка была для меня гораздо существеннее. У меня перестали запускаться службы СУБД PostgreSQL и MySQL с базами данных моих сайтов. Вначале я грешил на ошибки на диске, из-за которых у меня нарушилась целостность баз данных. Но скаченная мною утилиты MySQL Recovery Tool оказалась бесполезной. Я переустановил сервер, но старые базы данных он не подключил. Но, как говориться, «хорошая мысля приходит опосля…». Я решил проверить код ошибки, выдаваемый службой подсоединения серверов (при том, что запуск самих служб завершался аварийно безо всяких ошибок). На моё удивление, вопросов по этим ошибкам на форумах задаётся не мало. Видимо, это недоработка либо разработчиков MySQL, либо технических писателей по этому продукту, если люди не находят ответа в документации… Ответы, как всегда, дурацкие, типа «запусти службу». Но среди всего этого шума я нашёл один комментарий, «случайно или по недомыслию» не удалённый модератором форума как офтопик: «У меня похожая ошибка появлялась при нарушении прав доступа к файлам». Это меня «зацепило», и я решил проверить права доступа к каталогу MySQL с базами данных. Сравнение с оригинальной установкой показало, что:

  1. Понижены права учётной записи «СИСТЕМА» для каталогов (разрешение только на чтение):
  2. Отсутствовали учётные записи группы «NETWORK SERVICE» и пользователя «Администратор» для каталогов.

Были только предоставлены права для полного доступа к каталогу группы «Администраторы» сервера, но, как оказалось, полномочий этой учётной записи для запуска службы MySQL недостаточно. Только предоставления полного доступа к каталогу для учётных записей из пункта 1 и 2, не больше и не меньше, спасло ситуацию. Файлы оказались неповреждёнными. Что касается причины прежней работы сервисов без полномочий этих учётных записей, то с полным доступом группы все к каталогам будут работать не только нужные программы, но и все вирусы. И антивирус будет бессилен. 🙂

До этого, по той же причине, у меня не запускался сервер Apache. Спасло только обращение к офлайновой документации к серверу Apache.

Вердикт. Хотите менять права доступа к файлам – готовьтесь к нештатным ситуациям. В управлении правами доступа заключается искусство системного администрирования. 🙂

Добавить комментарий