Ember.jsКомпиляция шаблонов в Ember.js 1.10

Только немного отвлёкся от Ember.js, как в нём внезапно произошли изменения, а именно, сменился движок рендеринга шаблонов. Был Handlebars, а стал какой-то HTMLBars, у которого я даже официального сайта не наблюдаю. Хотя для рядового разработчика ничего не меняется, внешне сами шаблоны остаются почти как есть, основные же отличия во внутренностях.

Если в двух словах, то было и стало.

Раз:

1
2
<script src="/bower_components/handlebars/handlebars.js"></script>
<script src="/bower_components/ember/ember.js"></script>

Два:

1
2
<script src="/bower_components/ember/ember-template-compiler.js"></script>
<script src="/bower_components/ember/ember.js"></script>

Второй момент - это предварительная компиляция *.hbs шаблонов в JavaScript-код. В предыдущей записи, посвящённой Ember.js, использовался модуль ember-precompile, однако сейчас я его даже пробовать не стал, уверен, что ошибки вылезут довольно быстро. Есть же и другие инструменты, рекомендованные на официальном сайте данного фреймворка (здесь).

git diff colors incorrectly

Gitgit diff и FreeBSD

В общеобразовательных целях решил поиграться с FreeBSD и, естественно, установил туда Git. Настроил, как положено, вывод цветов в консоль, т.е.:

1
git config --global color.ui true

И, вроде бы, всё хорошо, однако при использовании команды git diff вывалилась такая печалька на экран.

Решение нагуглилось секунд за 30. Нужно всего лишь установить в конфигурации Git-а правильный пейджер.

1
git config --global core.pager 'less -R'

Вот, собственно, и всё. Можно было и не писать этого всего, но должны же быть тут какие-то заметки :)

LinuxЗапуск MySQL-сервера после падений

Так уж вышло, что на одном из подконтрольных мне серверов, то ли от нехватки памяти, то ли от всплесков нагрузки, то ли от того и другого сразу, регулярно падает сервер БД MySQL. Где-то раз в неделю или две. Особенно нехорошо, когда владелец сайтов, размещённых на этом сервере, звонит в связи с этим рано утром или ночью, так что доктор прописал процесс подъема БД автоматизировать.

Первое решение нарисовалось при переписке с известным крутокодером. И имя этого решения monit, однако картина с ним принципиально не поменялась, периодические падения не закончились. Может быть чего-то в доках не дочитал, может руками кривыми конфиги редактировал, но не срослось. Причём в тестовых остановках мускула монит отрабатывал отлично, а в реальности, видимо, не всегда.

LinuxМонтирование диска медиаплеера в линуксах

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

Первый пациент, это Popcorn Hour A-300, про него я когда-то писал тут. Аппарат был хороший, но сильно долго не прожил по моей вине - глюкнул винт, а я, находясь под воздействием пива, разобрал и собрал плеер, вывихнув при этом разъём SATA из платы. Ну да ладно, то другая история, а сейчас монтирование. По NFS.

1
sudo mount -t nfs -o vers=3 192.168.1.169:/share ~/path/to/A300

Причём без этой опции vers=3 не получалось, вечер провозился точно, пока где-то не нагуглил.

Второй медиаплеер Dune HD TV-303D. Пришёл на смену первому и работает по сей день. NFS в нём я не обнаружил, примонтировал используя Samba

1
sudo mount -t cifs -o guest,rw,uid=morontt,gid=morontt //192.168.1.171/dunehdd ~/path/to/DuneHD

Пользователя и группу желательно указать свои, как и сетевой адрес устройства, и точки монтирования :)

Возможно, что каждый раз выполнять команду или запускать скрипт с ней внутри будет неудобно, но если устройства никуда не собираются перемещаться друг относительно друга, то можно прописать подключение в /etc/fstab, а нужную строку подсмотреть в /etc/mtab, когда устройство примонтировано. Что-то вроде такой строки (может, ещё опции придётся подкорректировать):

1
//192.168.1.171/dunehdd /home/morontt/path/to/DuneHD cifs rw,uid=morontt,gid=morontt 0 0

P.S. Монтирование по протоколу samba может не удаться сходу и будет ругаться на неизвестную файловую систему. В таком случае поможет установка пакета cifs-utils, т.е.:

1
sudo apt-get install cifs-utils

ВсячинаМаксимальная длина URL-адреса в Internet Explorer и другие ограничения

Совершенно внезапно наткнулся на такое ограничение, как максимальная длина URL в Internet Explorer. Составляет она 2083 символа. Вот пруфлинк, если кто усомнится. С одной стороны, это много, но с другой - мало. По современным-то меркам, когда винты уже давно в несколько терабайт. На проекте, где вскрылся сей факт, длина некоторых ссылок переваливает за три тысячи. Тучища GET-параметров :)

Добавлю сюда ещё один параметр, про который не узнаешь, пока не наступишь на грабли. Уже не про эксплорер, а про PHP. Это max_input_vars, который по умолчанию равен 1000 и означает максимальное количество переменных, которое может быть передано в запросе, т.е. в $_GET, $_POST и $_COOKIE (по отдельности).

UbuntuУстановка последних версий Node.js и npm

Просто памятка. Надоело уже искать по интернету.

Делаем раз:

1
2
3
4
5
6
7
8
# ниже по ситуации, в зависимости от дистрибутива,
# если нет команды apt-add-repository
#
# sudo apt-get install python-software-properties
# sudo apt-get install software-properties-common

sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update

Делаем два:

1
sudo apt-get install nodejs

И готово. Проверено на Ubuntu 14.04 LTS и 12.04 LTS :) Если не ошибаюсь, то npm установится автоматически с nodejs. Ежели не установился, то ещё одна строчка в консоли:

1
sudo apt-get install npm

Symfony2Symfony2 и Ember.js

Внимание, данная запись устарела. Работоспособность модуля ember-precompile под вопросом начиная с Emberjs 1.9, в связи с переходом на handlebars 2.0.0, а с версии эмбера 1.10+ шаблоны рендерятся с помощью HTMLBars, об этом напишу в ближайшее время.

Эту тему, конечно, в двух словах не опишешь, но попробую. Что это такое и с чем его едят - рассказывать не буду, т.к. раз уж вы сюда попали, то слова эти для вас не пустой звук. Расписывать, почему именно Symfony2 и Ember.js - тоже. Просто так сложилось. Ладно, вступление окончено.

В данной записи будет затронута только серверная часть, хотя не исключено, что когда-нибудь дойдут руки и до статеек по эмберу. Собственно, Symfony-приложение предоставит яваскриптовому приложению REST API, а так же неким образом "подготовит" его и выдаст клиенту в браузер.

ПрограммированиеProject Euler

Давно не писал сюда, надо исправляться :)

Какое-то время назад наткнулся на Projecteuler.net Штука оказалась очень интересная и до сих пор не отпускает. Если в двух словах, то это проект, где размещена куча задач математического и околоматематического характера для программистов, причём решить их надо таким образом, чтобы компьютер затратил на вычисления не больше минуты. Хотя это условие не совсем корректно, т.к. проект родился в 2001-м году, а компьютеры тогда были несколько другие. И список задач продолжает пополняться. В общем, надо придумать такой алгоритм, который работал бы не слишком долго :)

Помимо решения задачек, собственно, задумал на примере этого проекта немного разнообразить свой запас языков программирования, ведь просто так по книжкам изучить их вряд-ли выйдет, будет только казаться, что всё понимаешь, ровно до тех пор, пока не придётся что-то на этом языке “Х” написать. А на Project Euler этого что-то хватает с головой.

Для любопытных создал репозиторий, в дополнение к тысячам других на том же GitHub-е.

profile image

P.S. Присоединяйтесь :) Мой Friend Key, если что, 662120_5b583b32e92f784f26c6bc51a19ce5f0

RaspbianRaspbian + Node.js на Raspberry Pi

Приобрёл себе этот микрокомпьютерчик и замыслил для начала поднять на нём небольшой сайт, а чтобы скучно не было, задумал этот сайт написать на JavaScript с серверной стороны. Да и просто для разминки мозгов.

Поскольку на борту самый обычный линукс на основе Debian, то всё показалось предельно простым, т.е.:

1
sudo apt-get install nodejs npm

Однако стоило посмотреть версию установленных паркетов, так сразу и стало печально. И дело не только в циферках (0.6.19 для nodejs и 1.1.4 для npm), тот же модуль forever уже не запустишь. Хотя и сам Debian тоже не радует дремучестью своих пакетов, ну да ладно, хотят люди стабильности - пусть им будет стабильность :) А я пошёл гуглить.

Секреты JavaScript ниндзя

ЛитератураСекреты JavaScript ниндзя

Прикупил недавно эту книгу → "Секреты JavaScript ниндзя" (Джон Резиг, Беэр Бибо). Почти три года назад тоже писал тут о книге, связанной с JavaScript, и тоже фигурировали эти самые ниндзя :) Хотя ниндзя веб-разработки я так и не стал.

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

Теперь о самой книге. Зацепила. Есть у меня и другие, но именно с этой стало понятно, чем, собственно, JavaScript отличается от других языков. Доступно и с большим количеством примеров описываются основы языка. Для меня, например, прояснились такие тёмные стороны JavaScript, как прототипизированное наследование и сами прототипы, что позволяет взглянуть на объектно-ориентированное программирование с другой стороны, отличной от привычных реализаций, где объекты основываются на классах.

В общем, рекомендую :)