Ember и трудности отладки
Разрабатываю некий сайт, на котором должно быть много яваскрипта и аякса. Посмотрел модные
Основные достоинства Эмбера по сравнению с обычным подходом (jQuery и нагромождение обработчиков
Я еще не достиг той степени просветления, когда достигается экономия в 146%, и еще натыкаюсь на разные трудности. Вот забавный пример. Делал одну страницу по аналогии с уже готовой.
Assertion failed: The value that #each loops over must be an Array. You passed Array
Обычно сообщения Эмбера помогают понять, что не в порядке. Но не в этот раз. Я и сам знаю, что в цикл нужно передать массив, и что я передал массив. Разобрался с проблемой, только когда посмотрел, какие данные присылает сервер. Как оказалось, я забыл обновить серверную часть и сделать сериализацию массива, и при сохранении в БД insert_or_update_assoc_array()
, код которой приведен ниже, приводила массив к строке 'Array'
и записывала ее в БД. Таким образом, под фразой «You passed Array» имеется в виду «вы передали строку 'Array'
, а не массив».
public function insert_or_update_assoc_array (array $params, $table)
{
$values = array();
foreach ($params as $name => $value)
$values[] = ((string) $name) . '=' . ($value === null ? 'NULL' : (is_numeric($value) ? (string) $value : '\'' . $this->escape((string) $value) . '\''));
$values = implode(', ', $values);
$sql = 'INSERT INTO '.$table.' SET '.$values.' ON DUPLICATE KEY UPDATE '.$values;
$this->query($sql);
}
К недостаткам Эмбера относится его размер. Фреймворк в несколько раз тяжелее jQuery. Впрочем, умные ребята давно настроили автоматическое сжатие, объединение и архивирование стилей и скриптов при развертывании сайта из систем контроля версий. В таком случае подключение Эмбера эквивалентно добавлению
Еще я так и не понял, как обстоят дела с кроссбраузерностью. В документации об этом нет ни слова, и поиск по интернету ничего толкового не дает. У меня сайт не заработал в IE8, и я так и не понял: это так и должно быть, или я
Опасно!
Военкомат в Дубне переехал в новое здание:
Подслушано в столовой
— Это царский пирожок?
— Нет, это королевская ватрушка!
А потом еще этот парень назвал семгу в сухарях курицей.
Технологии, облака и хостинг
Досмотрел трехчасовой доклад Ильи Григорика о клиентской оптимизации (первая часть и вторая часть). По итогам просмотра написал свои заметки.
Сформулирую еще несколько мыслей о технологиях (есть ощущение, что я зря ленюсь и не записываю их сюда).
Умные ребята давно поняли, что слово «облачный» в применении к информационным технологиям наполнено исключительно маркетинговым смыслом, и в «облачных технологиях» нет ничего принципиально нового. В то же время прорывные технологии появляются незаметно и со временем получают признание без особого пиара.
Отличный недавний пример — BitTorrent Sync. Это программа для синхронизации файлов на компьютерах и (теперь уже) мобильных устройствах. В ее основе лежит тот же протокол, что и в торентах, а по функциям программа ближе всего к дропбоксу. Интерфейс крайне прост, для подключения к папкам достаточно обменяться короткой
Задача синхронизации файлов с разным успехом решалась давно. Торентам тоже больше десяти лет. Догадались и успешно совместили их только сейчас.
Единственное существенное отличие BitTorrent Sync от дропбокса — отсутствие центрального сервера. Иными словами, кроме ваших устройств файлы больше нигде не хранятся, и синхронизация происходит только тогда, когда устройства одновременно подключены к сети. Впрочем, никто не мешает запустить btsync на сервере и устранить этот возможный недостаток. В организациях роль сервера легко сыграет постоянно включенный компьютер.
Перед описанием опыта использования я должен вспомнить о хостинге. Я использую и рекомендую виртуальные серверы Linode. За всё время использования этого хостинга сервер отключался один раз в ходе планового апргейда. Ссылка в этом абзаце с моим реферальным кодом. По нему зарегистрировались 6 человек, благодаря чему я заплатил за хостинг на 120 долларов меньше. Спасибо вам, добрые люди :)
Со времен прошлой заметки трехлетней давности тарифные планы Linode регулярно обновлялись. В 2011 году на самом дешевом тарифе за 20 долларов в месяц увеличили дисковое место с 16 до 20 гигабайт, потом снизили стоимость дополнительного трафика. Этой зимой дисковое место увеличилось до 24 гигабайт. Весной началось глобальное обновление: оперативная память удвоилась с 512 мегабайт до 1 гигабайта, включенный в тариф трафик увеличился с 200 гигабайт до 2 терабайт, и количество ядер процессора возросло с 4 до 8. Наконец, совсем недавно дисковое место снова увеличилось, с 24 гигабайт до 48.
Ясно, что мы видим не доброту владельцев хостинга, а проявление законов рынка и конкуренции. Я слышал отзывы о хостинге DigitalOcean. Самый дешевый тариф выглядит интересно, я бы поэкспериментировал: 512 мегабайт оперативки, 1 ядро, 20 гигабайт SSD, 1 терабайт трафика за 5 долларов в месяц.
Так вот, из образовавшихся 48 гигабайт на моем сервере занято от силы 5. Чтобы остальное место не простаивало, я запустил btsync и залил в «личное облако» музыкальную коллекцию. Под линуксом программа не требует настройки и управляется через
BitTorrent Sync — простой и мощный инструмент. Сценарии его использования на сервере гораздо шире «облачного диска». Самое простое — синхронизировать папку с резервными копиями. При добавлении бекапов туда они автоматически копируются на другие компьютеры. Или отказаться от загрузки файлов сайта через классический FTP и загружать их через btsync. Полет фантазии ничем не ограничен :)
Добавлено 20.12.2022: описываемая программа переименовывалась в resilio sync. Я от нее отказался в пользу открытой и более стабильной альтернативы — syncthing.
Спагетти-код
Большой перевод на Хабре про
Автор рассказывает о
Объектно-ориентированное программирование, первоначально разработанное для предотвращенияспагетти-кода, стало(из-за использования без полного понимания «паттернов проектирования») одним из худших его источников. «Объект» может спокойно совмещать в себе код и данные, имея при этом любое количество интерфейсов, в то же время класс может свободно порождать подклассы по всей программе.Объектно-ориентированное программирование таит в себе большую мощь, и при дисциплинированном использовании, оно может быть очень эффективно. Но большинство программистов не могут с этим справиться, и со временем их код превращается в спагетти.
Потом рассматривается «Большой код» вообще. Автор заявляет, что у нас вообще нет хороших методов разработки «Большого кода», и противопоставляет его философии Unix — сделай одну вещь, и сделай ее хорошо.
Современный рынок труда
Сегодня за обедом разговаривали с коллегой:
— Я чувствую спрос на себя как на программиста, а как на физика — не чувствую.
— И это в стране, первой запустившей человека в космос.
Домодедово и S7
Евгений Степанищев пострадал от задержки вылетов
Марш против палачей
Так называлась эта акция оппозиции. Шествие проходило
Пионы и агитационный материал за Навального.
Как обычно на этом маршруте темп движения был слишком медленным. Я обогнал основную колонну. Впереди было просторнее и свободнее.
Журналисты и наблюдатели оккупировали балконы.
У поворота на Болотную. Вдали Большой каменный мост опять перекрыт поливальными машинами и, судя по цвету формы, внутренними войсками.
Дмитрий Быков.
Во главе колонны Рыжков, Касьянов. Навальный с женой, за ними их охранник, отпустивший усы и бородку. Яшин. Ему не надо было становиться рядом с Навальным.
Замоскворецкий мост тоже перекрыт. Кремль надежно защищен.
Людей было много. Точнее оценить сложно. Не очень много, но много. Тысяч
Утром лил дождь, да и прогноз на день не радовал. Я подготовил куртку, кожаные кроссовки и зонтик. Но тучи разошлись, и у меня сгорела шея.
Культурные различия
На хабре пишут о видеорегистраторах у полицейских на Западе. Как выяснилось после падения челябинского метеорита, регистраторы на обычных машинах у них устанавливать не принято.
Распространение регистраторов среди западных полицейских и отечественных автомобилистов — одно из проявлений культурного различия.
Тут вспоминается другое различие, в обсценной лексике. У нас говорящий упоминает физиологическую процедуру с участием себя и матери оппонента, а у них — с участием оппонента и его матери.
Интересно, есть ли связь между этими двумя различиями?
Запрет курения
Опрос на Эхе:
Кстати, единственный нормальный закон, принятый этой Думой.