MySQL и поддержка Unicode
UTF-8
UTF-8 (от англ. Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы Юникода, используя переменное количество байт (от 1 до 6).
Кодировка UTF-8 может представлять каждый символ в наборе символов Unicode, который варьируется от U+000000 до U+10FFFF. Это 1,114,112 возможных символов. Еще не все коды связаны с символами.
Благодаря тому что UTF-8 кодировка с переменной длиной, это позволяет оптимально кодировать символы для низких диапазонов, тратя на это меньше байтов на символ.
UTF-8 в MySQL
В MySQL кодировка utf8 использует максимум 3 байта на символ и включает только BMP символы. Начиная с версии MySQL 5.5.3 появилась кодировка utf8mb4, которая использует максимум 4 байта на символ и поддерживает дополнительные символы:
- - BMP символов utf8 и utf8mb4 имеют одинаковые характеристики хранения: одинаковый код, одинаковое кодирование, одинаковую длину.
- - uft8 не может хранить дополнительных символов, тогда как utf8mb4 использует 4 байта для сохранения этого символа. Поскольку utf8 не может хранить все символы то при переходе на более позднюю версию можно не беспокоится о потере данных в столбцах.
Из этого следует что в MySQL до версии 5.5.3 была только частичная поддержка UTF-8. При сохранении информации символы которые не входили в MySQL кодировку utf8 удалялись, что вело к потери информации.
Преобразование индо-арабских цифр в арабские цифры на PHP
Арабские цифры, к которым мы привыкли, используются в большинстве стран мира и составляют набор из десяти знаков: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; для записи чисел в десятичной системе счисления. Но арабские и индо-арабские цифры являются видоизменёнными начертаниями индийских цифр, приспособленными к арабскому письму.
Арабские цифры, используемые в арабских странах Африки (кроме Египта) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Индо-арабские цифры, используемые в арабских странах Азии и в Египте | ٠ | ١ | ٢ | ٣ | ٤ | ٥ | ٦ | ٧ | ٨ | ٩ |
Персидские цифры | ۰ | ۱ | ۲ | ۳ | ۴ | ۵ | ۶ | ۷ | ۸ | ۹ |
Индийские цифры (в письме деванагари), используемые в Индии | ० | १ | २ | ३ | ४ | ५ | ६ | ७ | ८ | ९ |
Само название «арабские цифры» образовалось исторически, из-за того, что именно арабы распространяли десятичную позиционную систему счисления. Цифры, которые используют в арабских странах Азии и в Египте (называемые арабами "индийскими цифрами"), по начертанию сильно отличаются от используемых в европейских странах.
Смена JAVA_HOME в Ubuntu
После обновлений в Ubuntu бывают ситуации когда приложения использующие Java перестают работать(ошибки при запуске) или не запускаются. Зачастую это связано с тем, что приложения начинают использовать установленную с апдейтами новую версию Java. Например PhpStorm 9.0.2 не хочет работать с Java 9. Для того что бы заставить использовать версию "пониже" достаточно сменить системную переменную JAVA_HOME и указать какую версию Java использовать.
Решение проблемы доступа по ssh, ошибка: Too many authentication failures for user
Когда SSH-клиент перебирает и предлагает серверу доступные SSH-ключи, например для пользовательского сеанса, добавленные командой ssh-add, а сервер не хочет их принимать, то возникает ошибка Too many authentication failures for user.
Парсинг URL с помощью JavaScript
Часто возникает ситуация, когда нужно отпарсить URL на клиенте. Сохранить какие то параметры перехода в cookie, перенаправить пользователя на другой ресурс в зависимости от параметров в URL. Встроенной функции, такой как parse_url в PHP к сожалению нет. Конечно это можно сделать все вручную с привлечением регулярных выражений.
Преобразование первых букв в заглавные(верхний регистр) - PHP
PHP хорош многообразием нативных функций языка. Однако, в некоторых случаях приходится дописывать недостающий функционал. Особенно это заметно при работе с функциями преобразования строк и различными кодировками.
Например, ucfirst — функция, которая преобразовывает первый символ строки в верхний регистр. Казалось бы, не должно возникнуть никаких проблем, но при работе с кириллицей такого преобразования не происходит. Это касается и функции ucwords — преобразует в верхний регистр первый символ каждого слова в строке.
С символами анг.алфавита проблем не возникает...
Загрузка JavaScript(без блокировки отрисовки документа, асинхронная загрузка)
С ростом скорости интернет соединения и увеличении мощности не только десктопных, но и мобильных устройств веб страницы стают более "тяжелыми". Количество и размер подключаемых файлов растет: JavaScript файлы, css файлы, изображения, виджеты сторонних сайтов, iframe. На данный момент специфика работы браузеров такая, что при загрузке js файла блокируется отривсовка до того момента, пока скрипт не выполниться. Современные браузеры в фоновом режиме будут парсить документ и скачивать скрипты и стили, но отрисовка будет заблокирована. Сравнение сетевых параметров для различных браузеров можно посмотреть на...
Шаблоны проектирования в PHP: Singleton
Singleton (Синглтон, одиночка) - порождающий шаблон проектирования, гарантирует, что в приложении(однопоточном) будет использоваться только один(единственный) экземпляр класса. Объекты класса Singleton будут созданы только один раз и при последующих обращениях будет использоваться уже созданный объект, а не будут создаваться новые экземпляры. Это очень удобно и экономно. Например: соединение к БД - нам не нужно каждый раз создавать новое соединение; доступ к объекту конфигурации; в MVC - порождение главного контроллера; объект логирования.
Возле Apple Storeв в Нью-Йорке начала образовываться очередь за iPhone 6
Сейчас можно только догадываться, станет ли 19 сентября стартом продаж iPhone 6. Но на самом деле, 19 сентября – наиболее подходящая и правдоподобная дата начала продаж новых Apple смартфонов. Во-первых, это пятница; во-вторых, по аналогии с предыдущими годами, разница между презентацией(9 сентября) и началом продаж(19 сентября) составляет 10 дней. Исходя из этого, приверженные поклонники продукции Apple уже занимают очередь за новеньким iPhone. Традиционно, первые потенциальные владельцы будущей новинки засветились возле Apple Store на Пятой Авеню в Нью-Йорке.
Релиз Django 1.7
После почти года ожидания в свет вышел релиз Django.1.7. Подробное описание изменений можно найти на странице Django 1.7 release notes официального сайта.
Наиболее важные изменения и наработки:
Нативная поддержка миграций баз данных на уровне фрефмворка. Описание обновления South - приложение для управлениями миграциями в django....