К основному контенту

Сообщения

Ошибка в mysql "BLOB/TEXT COLUMN 'COLUMNNAME' CAN'T HAVE A DEFAULT VALUE"

При создании поля типа TEXT или BLOB в MySQL, если указать полю значение по умолчанию,  можно столкнуться со следующей ошибкой: BLOB/TEXT column '...' can't have a default value Данная проблема решается путем изменения настроек mysql в файле my.cnf: sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" Меняем на sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" То есть необходимо просто убрать директиву NO_ENGINE_SUBSTITUTION

500 Illegal PORT command + vsftpd + linux

Часто, если сервер находится за шлюзом и нам необходимо поднимать ftp, мы столкнемся с данной проблемой. Сторонний клиент из-за шлюза не сможет подключиться к нашему ftp-серверу, но с локальной сети никаких нестыковок не возникнет. Проблема заключается в особенностях работы пассивного режима FTP. Используя vsftpd нам необходимо предпринять несколько шагов для устранения данной неполадки. Внести изменения в vsftpd.conf (/etc/vsftpd.conf). passv_enable=YES passv_min_port=30000 passv_max_port=30100 Перезагрузить vsftpd Открыть порты 30000-30100 на сервере Пробросить порты 30000-30100 на вашем коммутаторе в сторону сервера.. После этого из интернета ftp будет доступен в пассивном режиме.

Ошибка при установке плагина composer-asset-plugin v1.0.0-beta3

При попытке установки плагина composer-asset-plugin v1.0.0-beta3 с помощью команды php composer.phar global require "fxp/composer-asset-plugin:1.0.0-beta3" может возникнуть следующая ошибка: Your requirements could not be resolved to an installable set of packages.   Problem 1     - Installation request for fxp/composer-asset-plugin 1.0.0-beta3 -> satisfiable by fxp/composer-asset-plugin[v1.0.0-beta3].     - fxp/composer-asset-plugin v1.0.0-beta3 requires composer-plugin-api 1.0.0 -> no matching package found. Potential causes:  - A typo in the package name  - The package is not available in a stable-enough version according to your minimum-stability setting    see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details. Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. Installation failed, deleting ./composer.json. Проблема решается ба...

Проблемы с установкой Composer для Yii2

Давеча начал изучать фраймворк Yii2. Так как с ним раньше не имел никаких дел, начал с нуля, то есть скачал книгу Web application development with yii 2 and php (кстати думаю сделать перевод, так как не нашел нигде). Первое что надо было - установить Composer, и тут я столкнулся с проблемой. Почвой для изучения и тестирования я выбрал Linux OpenSUSE 12.3, так как неплохо с ним знаком. Установил его себе на VirtualBox. Для начала мне необходимо скачать архив с нужным инструментом: $ curl -sS https://getcomposer.org/installer | php На что я получил ошибку: If 'php' is not a typo you can use command-not-found to lookup the package that contains it, like this cnf php То есть, для начала нам необходимо установить php. No problem... yast -i php Но меня снова ждало разочарование Some settings on your machine make Composer unable to work properly. Make sure that you fix the issues listed below and run this script again: The phar extension is missing. Install it o...

Ищем отличия между двумя коллекциями объектов с помощью C#

Введение Имея некую текущую коллекцию объектов и новую коллекцию, нам необходимо узнать какие элементы были добавлены в оригинал, а которые были удалены. Описание Что бы было проще, назовем текущую коллекцию А, а новую коллекцию, в которой будут изменения – B Объекты, которые удалены  содержатся в коллекции А, но не содержаться в B Объекты, которые добавлены – это те объекты, которые содержатся в коллекции B, но не содержаться в A Код: Опишем сказанное выше с помощью следующего кода: public static void Compare < T > ( List < T > existing, List < T > updated, out List < T > added, out List < T > removed ) where T : IComparable { added = updated. Except ( existing ) . ToList ( ) ; removed = existing. Except ( updated ) . ToList ( ) ; } В принципе, как вы видите ничего сложного. Пример Теперь прикинем на примере: static void Main ( string [ ] args ) { List < int > A = new List < int >...

Получить все подстроки между круглыми скобками с помощью регулярных выражений

Часто встречается необходимость выделить из строки выражения, которые находятся между простых скобок. Для примера у меня была задача найти в коде все вхождения функции function( var 1, var 2) и получить оттуда переменные. Подобные задачи решаются с помощью регулярных выражений. В данном случае: function\ ( ( ? < val > . * ? ) \ ) Разберем данное выражение подробнее. function – последовательность символов до скобок (название нашей функции) \( , \) - экранированные символы «скобка» (? ,   ?) – Выделяет часть нужного нам выражения в группу < val > - группа нужного нам выражения .* - учитывать все символы между скобками В итоге у нас получился следующий код (для C#) Regex pattern = new Regex ( @ "function\((?<val>.*?)\)" ) ;   foreach ( Match m in pattern. Matches ( fStr ) ) { if ( m. Success ) { string val1 = m. Groups ...

Почему нельзя наследовать структуры в C# ?

Введение - зачем используются структуры? Все мы сильно любим структуры (идея, чуждая Java, не считая примитивных типов). Структуры, когда они не упакованы, зачастую, предоставляют прекрасную возможность обрабатывать динамические данные относительно небольшого размера. Размещение и освобождение типов данных в целом проще, чем размещение и освобождение ссылочных типов. Это связано тем, что структуры размещаются в стеке, либо встроены в содержащиеся типы и освобождаются, при очищении стека либо когда встроенные типы перераспределяются, в то время, как ссылочные типы размещаются в куче и очищаются сборщиком мусора (garbage-collected) Хм... Структуры не хотят наследоваться. Объектно-Ориентированное Программирование дает нам возможность делать много полезных вещей. И основной коцепт - это, конечно же, наследование. Многие из нас, когда либо, пытались наследовать структуру только для того, что бы понять, что C# не позволит нам этого сделать. Для примера рассмотрим код: /...