WebDev

C++ и русский язык

Что мы хотим? А хотим мы полноценно работать с русским языком, т. е. чтобы не только русские символы нормально отображались (а не какими-нибудь вопросами или иными "кракозябрами"), но и чтобы полноценно функционировали все строковые функции.

Проводя параллели с PHP - как только возникает необходимость работать с кириллицей, сразу приходится отказываться от "чистых" строковых функций в пользу расширения mbstring.

WebDev Заметки на полях #3

Очередная порция "заметок на полях". В черновика аж с лета лежит.

Рамка в браузере Chrome вокруг форм

Хром добавляет для всех форм (input, textarea...) рамку (когда оная форма находится в фокусе). Выглядит она примерно так:

Outline рамка в хроме

Битые ссылки

Раньше на scomedy.com у меня был раздел с ютуб видео. Сайт на Drupal'е, поэтому особых проблем не возникло, просто создал дополнительный тип материала "YouTube videos" с полями title, description, youtube link, автоматическим генерированием превью, привязкой к нужным тегам, внутрисайтовым рейтингом и прочим. Т. е. по факту я получил тип материала, где основным контентом служил лишь один ютуб ролик. Тогда мне это казалось вполне себе хорошим ходом - а что, на сайте появилось с тысячу дополнительных страниц, на профилях комиков могу выводить топовые релейтид видео, которые доступны для просмотра прямо на сайте без перехода на ютуб, да и вообще наличие подборок видео явно не мешало, а наоборот хорошо вписывалось. Это я раньше так думал, потом раздел со всеми видео удалил, что, признаться, далось не легко, ибо на сабмит роликов убил далеко не один день. Но это все не суть важно.

WebDev Заметки на полях

Постоянно появляются какие-то мысли, ну или просто натыкаюсь на интересные решения, которыми хочется поделиться. В отдельности все это на пост явно не тянет, но вот публиковать подборочками почему бы и нет.

PHP rand() vs mt_rand()

Раньше был сторонником использования
mt_rand()
заместо
rand()
. Ну а что, работает аж в 4 раза быстрее, да и на выходе выдает не просто псевдослучайные числа, а более случайные псевдослучайные! Во всяком случае так говорит официальная документация.

Может оно так и было раньше (точнее таки да, было), но все течет, все меняется. На данный момент эти две функции работают примерно одинаково быстро (тестил), и "случайность" у них плюс/минус одинаковая, вот такого уже больше нет.

Алгоритмы используются разные, это да. Для mt_rand это Mersenne twister, для rand либо LCG (для Windows), либо LFSR (для Линукс). Но данные различия уже скорее для эстетов, лично я остаюсь при rand(), раз уж разницы особой нет.

Консольный текстовый редактор Nano

Стыдно! Который уже год сижу на Linux, а о Nano узнал буквально на днях.

Как я раньше правил конфиги? Alt+F2, gksu nautilus, а дальше искать нужный файл, открывать и править его в том же Geany. И так каждый раз... Даже ввести в консольке sudo gedit /etc/hosts руки не доходили. Стыдно-стыдно-стыдно.

О формировании структуры URL адресов

Формирование структуры URL адреса задача в некотором плане больше творческая, нежели техническая. Но даже если и так, то все равно - на первое место надо ставить логику, а не свою бурную фантазию. Ниже мое общее представление о том, какая же структура адресов является правильной.

Кстати, насчет терминов. В рунете принято название "ЧПУ", человекопонятный урл. Весьма забавно получилось - термин, который должен описывать процедуру грамотного составления URL, сам по себе является тем еще режущим глаз жаргонизмом. В остальном же интернете общепринятое название это SEF, search engine friendly. Т. е. о людях (или о все тех же человеках) ни слова. Главное, чтобы фрэндли для поисковых систем.

Ну и раз разговор уже зашел о поисковых системах, то...

C www или без?

philosoraptor with www or without

Чисто технически - www.site.com и site.com являются совершенно разными доменами/сайтами. Как и forum.site.com и site.com. Сам префикс "wwww" пошел еще с тех времен, когда интернет хосты было принято именовать по функциям, ими выполняемыми, как то www.site.com, ftp.site.com, nntp.site.com и т. д.

Сейчас же домены www.site.com и site.com общепринято делать зеркалами. Вопрос в том, какой домен сделать главным зеркалом, а на какой поставить 301-ый редирект? Или же сделать оба домена одинаково доступными?

Прежде всего я решил проверить, как обстоят с этим дела у популярных ресурсов, где выбор главного зеркала явно был обоснованным, а не случайным. Собрал список из 50-ти первых пришедших в голову сайтов, и проверил у каждого из них ответ сервера с префиксом www и без.

Результаты оказались весьма и весьма неоднозначными.

Различия echo и print. Что использовать?

Конструкции echo и print выполняют одинаковую функцию - вывод строковой информации. В исходниках и книгах можно встретить как повсеместное использование print-а, так и echo. В чем же их отличие и чему лучше отдать предпочтение?

MySQL vs файлы. Скорость поиска строки по подстроке.

На днях задался вопросом целесообразности хранение строковых данных в БД вместо файлов с точки зрения скорости поиска.

Хотя, конечно, вопрос правильней поставить так — чем быстрее осуществлять поиск в массиве строк, средствами языка программирования (в данном случае php) или средствами РСУБД (MySQL)? А сравнение «MySQL vs файлы» только для наглядности, ведь данные в базах тоже хранятся в файлах (а в чем же еще?) и используется все та же файловая система.

Решил провести небольшой тест. Сгенерировал 100к строк вида

MP0bWDXN1AxhI9yCZiGpKUZObSBOSrFv6vxTYkxPLUXjUmLJui
Z53PK4xcJgteCqAZ9p9w5LhTU15wBqFrlz6VtuX3Bg83xzSwOS
Tjt0seSoBkE6BPvyBPSoJjvHcS6VfLDYlXPD1ySsImp91Lxsrg

Каждая строка при генерации писалась одновременно в файл (*.txt) и в четыре таблицы — таблицу типа MyISAM, тип данных «text», таблицу MyISAM, тип данных «varchar(100)», таблицу InnoDB, тип данных «text» и таблицу InnoDB, тип данных «varchar(100)».