1

Менелион Эленсуле пишет:PHP quick tip: не используйте сериализацию массивов при работе с юникодом

Если вы хотя бы немного программировали на PHP, вы уже знаете, что с поддержкой unicode в этом языке, мягко говоря, далеко не всё гладко. Вот и я в очередной раз наступил на грабли там, где вроде бы должна была быть зелёная травка.
Иногда через форму нужно бывает передать массив строк. Можно, конечно, делать много-много input-полей типа hidden, но капитан Очевидность говорит нам, что это, во-первых, некошерно, во-вторых, просто неудобно, а в-третьих, в некоторых случаях может быть и небезопасно в плане «защиты от (любопытного) дурака».
PHP предоставляет нам неплохую функцию serialize(), которая вроде бы позволяет передавать любые объекты в виде строк, в том числе и через форму.
И передавал я так объекты очень долго, пока не пришлось мне иметь дело с большим массивом элементов, некоторые из которых были текстами в UTF-8 (причём не только по-русски). Вот тут-то и началась засада.
Хотел я вам показать, что бывает, если так сделать, но воспроизвести на тестовом файле не смог. Это-то и пишут другие программеры: когда именно вместо вашего текста отобразится весёлый набор крокозябров из высших значений unicode, никто точно не знает. И то, что я поверх сериализации использовал ещё base64, не меняет картины.
Что же делать?
Помимо сериализации можно использовать старый добрый (ну или новый, но по-любому добрый) JSON, который работает с UTF-8 и только с ней.
Для кодирования объектов в JSON в PHP имеется функция json_encode(), которая и придёт вам на помощь в трудную минуту.

Метки: ПрограммированиеPHPQuick tipsСериализацияUnicodeJSON

Читать полностью

Menelion Elensúle пишет:В тему леди Джавы и нашей обожаемой профессии)

В тему поста Рины про Java вспомнилось мне видео, которое я давненько уже смотрел на Youtube.
Говорят, что видеоряд этого дела на самом деле является пародией на рекламу не то среды разработки, не то системы отладки, в общем, чего-то из нашей кухни).
И опять-таки: слушаем слова). Французский акцент, кстати, неподражаем — как специалист говорю :-)).

Метки: КодПрограммированиеОтладкаЮморВидео

Читать полностью

Menelion Elensúle пишет:PHP quick tip: Heredoc-синтаксис

Как ни смешно, впервые воспользовался на практике heredoc-синтаксисом. Знал о нём очень давно (со времён, когда делал первые шаги в изучении PHP), но считал его излишеством.

Метки: ПрограммированиеPhpQuick tipHeredocвывод текста

Читать полностью

Menelion Elensúle пишет:Не доверяйте при разработке сторонним сервисам, или сказ о неудачном опыте

Сейчас становится очень модным при web-разработке перекладывать часть задач на сторонние ресурсы. Это может быть хранение файлов, осуществление живого общения (чата) и много чего ещё. Иногда это оправдано (когда речь идёт о больших компаниях), но в большинстве случаев это влечёт за собой большие риски. Сейчас я расскажу об этом на собственном примере.
Многие знают, что я люблю работать со звуком. В нашей семье за графику и видео отвечает Ностиэ, а за аудио — я.
Соответственно, я долго искал сервис наподобие Youtube, только для аудио: чтобы можно было выложить аудиофайл и в ответ получить код для вставки на сайт.
И в итоге я его таки нашёл. Нашёл и очень сильно обрадовался, начав закачивать кучу файликов и ставить кучу плееров в лекции в Истаноре.
А в один вовсе не прекрасный момент они не то молча поменяли плеер, не то классический плеер временно ушёл в даун. В общем, студенты не могли прослушать ни единого звука в тех лекциях, где они были.
Конечно, в итоге мы восстановили эти плеера, но вопрос по-прежнему остаётся открытым: необходимо сделать что-то, чтобы и звуковые файлы лежали на нашем сервисе. Потому что если упадёт наш сервис, то он это сделает сразу и весь, а не кусочком лекции. И повлиять на его работоспособность я смогу по мере сил, ибо, в конце концов, это я плачу за хостинг.
Вывод: не верьте сторонним сервисам.

Метки: Будни разработчикаWeb-программированиеСервисы

Читать полностью

Menelion Elensúle пишет:И снова про багтрекер: решение таки найдено

Помнится, я недавно писал о том, что очень хотел найти багтрекер для Ойров и Истанора.
Поддомен соответствующий у меня был создан. Зайдя в очередной раз туда для того, чтобы посмотреть на, как я думал, раскуроченные останки нескольких багтрекеров, которые я пробовал, обнаружил там вполне себе целый и работающий Mantis, да ещё, как оказалось, последней версии.
Раньше я Мантис пробовал, но не понравился он мне из-за отсутствия нормальных уведомлений на электронную почту, а точнее, страшной их, уведомлений, глюкавости. Однако последняя версия выглядит прилично, причём не только по этому параметру. Оказывается, и фишечки, которые мне надо, у неё в большинстве своём есть (возможность сделать приватным не только проект, но и отдельный баг-репорт или даже отдельный комментарий, что бывает ну ооочень надо, чтобы не светить имена файлов и полей базы данных, хотя бы).
Кроме того, мне неожиданно понравился их русский перевод. Сначала я плевался от слова «инцидент» (==англ. issue). Но с другой стороны, как это обозвать? Бага, ошибка, проблема? В Trac, где в английском варианте tickets, на русский переведено вообще как «Карточки» (!). Нет уж, пусть лучше будут инциденты.
Единственное, что у них немного непривычно реализовано, это тип инцидента: если вы запрашиваете нововведение, то это надо ставить соответствующий приоритет, а отдельного поля «тип инцидента» не существует. Там было ещё уйма всего, но я их повыключал за ненадобностью (например, отдельно платформа, операционка, шаги для воспроизведения, дополнительная информация... зачем оно нам?).
В общем, милости прошу на http://bugtracker.oire.org/. Пока регистрация открыта всем.
Как только увижу что-нибудь ужасное вроде «ааа, уминя картинка не открываиццо» или что-то подобное, что объясняется вашими настройками, — что ж, придётся давать доступ выборочно.

Метки: BugtrackerОйрыИстанорПрограммированиеБудни разработчика

Читать полностью

Menelion Elensúle пишет:Про багтрекер

Вообще я очень люблю багтрекеры.
Багтрекер (bugtracker) — это (web-)приложение, предназначенное для внесения и отслеживания ошибок в программах, а также для предложения разных нововведений.
Давно ищу что-то подходящее для Ойров+Истанора. Не в том смысле, что всем и каждому дам доступ репортить баги, а в том смысле, что лично мне очень удобно так организовывать свою деятельность: вспомнил что-то — зарепортил тикет. Потом захотелось попрограммить — открыл багтрекер, посмотрел, что у тебя не пофикшено и какие пожелания о нововведениях стоят, — ужаснулся и закрыл нет-нет, да и пофиксил пару багов.
Бесплатные решения на PHP+MySql, которые мне довелось видеть, хоть чем-то да не нравятся. А то, что в принципе нравится, на виртуальный хостинг не ставится. Например, Trac, написанный на Питоне и требующий доступа к серверу для своей установки.
Кстати, не поленился и поставил-таки виндовую версию с самостоятельным веб-сервером на локальную машину. Хорошая штука, но у меня есть идеи, как её усовершенствовать.
Прихожу к тому, что багтрекер надо писать свой. И вот уже лежат конфигурационные файлы, даже sql-файл с дампом базы лежит, но... не могу. Почему-то начинать всё с нуля как-то страшно тяжело.
Хотя и хочется. Вот.
И что делать — не знаю.

Метки: BugtrackerПрограммированиеБудни разработчика

Читать полностью

Menelion Elensúle пишет:Php quick tip: несколько переменных при инициализации цикла for

Недавно узнал, что при инициализации цикла for можно задавать не только счётчик итераций, но вообще любое произвольное число переменных.

Метки: ПрограммированиеPhpQuick tipsЦиклы

Читать полностью

Menelion Elensúle пишет:Под какую музыку лучше пишется код.

Вообще говоря, я обычно пишу код или в тишине, или под тихую музыку (специально выкручиваю громкость в Винампе практически на минимум).
Раньше думал, что лучше всего пишется под буддийские/индуистские мантры: поставишь какого-нибудь Рави Шанкара минуток так на сорок — и сидишь кодишь спокойно. Ещё тувинское горловое пение хорошо или какой-нибудь релакс: мозги улетают в астрал, мысля идёт, руки по клавиатуре летают — кайф, в общем, ни с чем не сравнимый.
Однако я понял, что так бывает не всегда. Вот если ты сидишь и класс какой-нибудь пишешь, или функцию вылизываешь, или что-то допиливаешь до блеска и красоты неописуемой — вот это да: мантры, горловое пение, тибетские чаши в самый раз.
Но если ты работаешь в аврале — тут нужен драйв. Причём не просто драйв, а Драйв с большой буквы. Трек последних дней (по нескольким причинам) — Василий К, «Время пиджаков» в электрической версии. Воо, вот под это только баги фиксить, напильником доравнивать то, что надо доровнять кровь из носу, а также делать за полчаса то, что нормальный кодер пишет за целый рабочий день.
Так что, уважаемые братья-сёстры по разуму, выбирайте музыку под текущую задачу: если надо кодить долго, медленно и со вкусом — это релакс, а если настиг аврал — драйв и ничего кроме драйва!

Метки: ПрограммированиеМузыкаБудни разработчика

Читать полностью

Menelion Elensúle пишет:Новинка в Истаноре: легко меняем номер лекций и курсы, на которых они стоят

Давно мучился тем, что для смены номера лекции в расписании и для того, чтобы поставить её (лекцию) на другой курс, надо было заходить на редактирование. Всегда с некоторым замиранием сердца нажимал "Редактировать": а вдруг что-то не то сделалось с текстом? А в лекциях по МММ вообще "труба": Ностиэ всякий раз приходилось переписывать части, где даются примеры html-кода.
Я уже давно носил в голове идею, как это сделать, и вот наконец... оно работает.
Теперь у номера каждой лекции есть плюсик и минусик (наподобие нашего, ойровского, ага!), позволяющие увеличить или уменьшить номер лекции на единицу. Кроме того, галочки и прочерки теперь кликабельные (то есть по ним можно щёлкать), и они взаимозаменяются, то есть снять или поставить лекцию на тот или иной курс теперь очень легко. Конечно же, это всё происходит без обновления страницы)
Ну и la cerise sur le gâteau (вишенка на пирожном), как говорят французы: теперь при добавлении новой лекции автоматически подставляется номер, следующий за последней присутствующей лекцией.

Метки: ИстанорПрограммирование

Читать полностью

Menelion Elensúle пишет:14 подсказок, замечаний и полезных практик по jQuery. Пересказ статьи

Это пересказ статьи Джеффри Уэя, опубликованной на известном сайте NetTuts+. Я решил не переводить статью дословно: где-то чересчур много воды, где-то автор цитирует огромные блоки исходного кода библиотеки jQuery, а где-то вообще даёт видеоролик с описанием того, что он делает. Но мой пересказ очень близок к исходному тексту).

Метки: программированиеJavaScriptjQueryполезностипереводы

Читать полностью


© Разработка, заклинания и дизайн — Ностиэ & Менелион Эленсуле, 2010 — 2020