Meettya`s blog

Your awesome Tagline

0 notes &

Мой front-end стек разработчика.Не то, чтобы я часто делал сайты, но немного front-end технологий никому не помешают.
Например, для разнообразных CoffeeScript поделок мне нужен простой и кондовый способ писать запускатор тестов для браузера и документацию. Может быть я нашел и не самый прямой путь, но все же довольно удобный.
Для develop-части используется cake-команда, по которой стартует Express-сервер, поднимающий на localhost сайт, с прекомпиляцией jade-шаблонов в html, сборкой кода через stitch и компиляцией всех отдельных coffee-файлов в js-аналоги.
Кроме этого заводится и LiveReload сервер, дабы обновления были сразу видны в браузере. Используется вариант node-livereload, как наиболее подходящий. Плагин для ST2 туповат и начинает обновлять страницу на каждый чих, может для чистых front-end разработчиков это приемлимо, но меня не восхищает обновление страницы при правке package.json :)
В браузере используем подходящий плагин.
Для public-варианта есть пара команд, первая из которых подготавливает все к коммиту, а вторая запускается после коммита, и переносит директорию со статикой из основной ветки в ветку gh-pages, как наиболее прямой способ иметь синхронизированные pages.
Результат выглядит примерно так - TinyData.
Вся черная магия - в репозитарии.
Если у кого-то есть предложения получше - милости прошу.

Мой front-end стек разработчика.

Не то, чтобы я часто делал сайты, но немного front-end технологий никому не помешают.

Например, для разнообразных CoffeeScript поделок мне нужен простой и кондовый способ писать запускатор тестов для браузера и документацию. Может быть я нашел и не самый прямой путь, но все же довольно удобный.

Для develop-части используется cake-команда, по которой стартует Express-сервер, поднимающий на localhost сайт, с прекомпиляцией jade-шаблонов в html, сборкой кода через stitch и компиляцией всех отдельных coffee-файлов в js-аналоги.

Кроме этого заводится и LiveReload сервер, дабы обновления были сразу видны в браузере. Используется вариант node-livereload, как наиболее подходящий. Плагин для ST2 туповат и начинает обновлять страницу на каждый чих, может для чистых front-end разработчиков это приемлимо, но меня не восхищает обновление страницы при правке package.json :)

В браузере используем подходящий плагин.

Для public-варианта есть пара команд, первая из которых подготавливает все к коммиту, а вторая запускается после коммита, и переносит директорию со статикой из основной ветки в ветку gh-pages, как наиболее прямой способ иметь синхронизированные pages.

Результат выглядит примерно так - TinyData.

Вся черная магия - в репозитарии.

Если у кого-то есть предложения получше - милости прошу.

Filed under JustMigrated develop front-end html site

0 notes &

Что не так с документированием кода?
Я искренне верю, что документация - ценный артефакт разработки, и бла-бла-бла.
Да, документация важна, но черт побери, пока нет ни одного способа сделать это хорошо, потому что процесс документирования сломан. Трижды. Именно так.
Вилы первые.
Обычно нам предлагают какую-нибудь фигню, которая “аффтоматизерует” процесс документирования кода, ну типа JavaDoc & co. Вы типа добавляете в код 5% текста, а волшебный ящик делает 95% черной работы и вуаля, у вас красивая документация!
Ага, похоже что в головах маркетологов именно так и происходит, ну так они же и не пишут код.
Потому что на самом деле это гнусное кидалово. Нет, вы не получаете эдакого технического писателя из коробки, все что вы получаете - еще один кусок кода, который пытается преобразовать ваш собственный код. Обычно не очень успешно.
Это не смотря на то, что вам приходится выучивать дебильный синтаксис и долбить по клавиатуре всякий раз, когда вы натыкаетесь на очередные вилы от разработчика “автоматизатора”:
нет, не может быть больше одного примера
нет, нельзя скрыть это
нет, нельзя показать то
да, вы обязаны писать именно так
и т.д. и т.п.
Черт побери, нафига мне эта ублюдочная прилада с характером светской львицы и интеллектом клинического имбецила?
Я знаю html (он ужасен), я знаю jade (это откровение), я могу сделать что-то красивое с TwitterBootstrap (я бездарь в дизайне) , а если мне его не хватит - могу дополнить чем угодно. Да, вот это должно быть красным, а это - новый параграф, а тут нужна картинка, а здесь - листинг кода и его результат. Все должно быть как я сказал, и именно так, никакой самодеятельности. Какого хрена я должен спорить с кодом?
Резюме: не бесите меня, я лучше знаю что я имею ввиду.
Вилы вторые.
Есть стойкое мнение, что документация должна быть “вшита” в код, в таком случае программист, правя код, поправит и документацию. И все будут счастливы.
Ага, похоже что в головах менеджеров именно так и происходит, ну так они же и не пишут код.
Послушайте, они не правы, причем дважды.
Если я не хочу править документацию прямо сейчас, особенно пока я занят кодом и тестами, я не буду этого делать, даже если документация будут вставляться между операторам. Я, черт побери, занят, не отвлекайте меня. Нет, я не говорю, что написание документации - работа кого угодно, но только не программиста. Это вполне моя работа, но (и это важное “но”) в другой роли.
Роли, блин, роли, вас же учат на ваших этих MBA, что это такое. Так вот, когда пишется код - я злобный мистер Хайд, а в момент написания документации я должен быть милым доктором Джекилом. И переход от одного образа к другому требует времени и сил. 
”- Но а как же актуальность документации!!?”
Ах, я воткну туда тег #TODO Update doc и займусь этим позднее.
Резюме: не отвлекайте меня, или ничего не будет готово.
Вилы вторые вторые.
Еще одна проблема с документацией, о которой почему-то нечасто вспоминают - это то, что есть (как минимум) два вида документации. Инструкция пользователя и инструкция для сервисного инженера. Каждая из них важна, но по-своему и для разных людей.
Для кода инструкция сервисного инженера (программиста) - это комментарии в коде типа “потому что” и спеки (тесты, если вас угодно). Тесты совершенно однозначно описывают как именно это работает, я всегда лезу в тесты если мне что-то непонятно по API.
Комментарии типа “потому что” экономят массу времени и сил при разборе кода-сырца:
почему тут обратный индекс? # обратный индекс быстрее, см бенчи
почему тут пушится запятая? # тупой API объекта требует запятую в конце
Это бесценно. Если я делаю что-то странное в своем коде - я пишу почему это случилось. В том числе и для того, чтобы рефакторя код, понять, что я ступил и это не проблема, что тут все можно поправить.
Это - те комментарии, которые должны быть в коде. Они короткие, вставлены только по делу и составляют с кодом единое целое. Я пишу их для себя. Так как я хочу, так как мне нужно.
Инструкция пользователя - совсем другое дело. Они только мешаются, захламляя место на экране и раздувая исходный код в 2-3 раза. Им тут не место. Да, именно так!
Ну, послушаете, сначала мы разбиваем все на модули, классы, методы, уменьшаем их до предела, а потом ффигачиваем к каждому 4-х строчному методу шапку из 2-х экранов доков, с описанием типа переменных, возвращаемого значения и примерами с комментариями. Это совершенно неправильно. Нелогично и отвратительно смотрится.
Пусть этот монстр живет где-то еще. В отдельной папке, в другой форме и виде. Пусть методы там будут перечислены в другом порядке, пусть будут исполняемые примеры, пространные описания профита и даже заметки. Пусть их, только не в коде.
”- Но а как же актуальность документации!!?”
Да легко, достаточно простого инструмента, который проверит что все public-методы имеют свою половинку в пользовательской документации. Элементарный матчинг имени метода класса и имени хеш-тега в файле документации. Кстати, добавляете сюда парсинг кода на наши #TODO теги и готово! Я уже подумываю сбацать такое для CoffeeScript.
”- А что если документация все-же стала неактуальна!!??”
Git расскажет вам, что за редиска правила файл класса и не пофиксила доки. Дальше сами.
Резюме: принцип “разделяй и властвуй” более универсален, чем вам казалось, позвольте мне использовать его чаще.
Итог.
Давайте подойдем к проблеме с правильной стороны и подходящими инструментами, тогда ее решение станет тривиальным, предсказуемым и управляемым.
PS. Я не отказываюсь работать, я отказываюсь заниматься фигней.

Что не так с документированием кода?

Я искренне верю, что документация - ценный артефакт разработки, и бла-бла-бла.

Да, документация важна, но черт побери, пока нет ни одного способа сделать это хорошо, потому что процесс документирования сломан. Трижды. Именно так.

Вилы первые.

Обычно нам предлагают какую-нибудь фигню, которая “аффтоматизерует” процесс документирования кода, ну типа JavaDoc & co. Вы типа добавляете в код 5% текста, а волшебный ящик делает 95% черной работы и вуаля, у вас красивая документация!

Ага, похоже что в головах маркетологов именно так и происходит, ну так они же и не пишут код.

Потому что на самом деле это гнусное кидалово. Нет, вы не получаете эдакого технического писателя из коробки, все что вы получаете - еще один кусок кода, который пытается преобразовать ваш собственный код. Обычно не очень успешно.

Это не смотря на то, что вам приходится выучивать дебильный синтаксис и долбить по клавиатуре всякий раз, когда вы натыкаетесь на очередные вилы от разработчика “автоматизатора”:

  • нет, не может быть больше одного примера
  • нет, нельзя скрыть это
  • нет, нельзя показать то
  • да, вы обязаны писать именно так
  • и т.д. и т.п.

Черт побери, нафига мне эта ублюдочная прилада с характером светской львицы и интеллектом клинического имбецила?

Я знаю html (он ужасен), я знаю jade (это откровение), я могу сделать что-то красивое с TwitterBootstrap (я бездарь в дизайне) , а если мне его не хватит - могу дополнить чем угодно. Да, вот это должно быть красным, а это - новый параграф, а тут нужна картинка, а здесь - листинг кода и его результат. Все должно быть как я сказал, и именно так, никакой самодеятельности. Какого хрена я должен спорить с кодом?

Резюме: не бесите меня, я лучше знаю что я имею ввиду.

Вилы вторые.

Есть стойкое мнение, что документация должна быть “вшита” в код, в таком случае программист, правя код, поправит и документацию. И все будут счастливы.

Ага, похоже что в головах менеджеров именно так и происходит, ну так они же и не пишут код.

Послушайте, они не правы, причем дважды.

Если я не хочу править документацию прямо сейчас, особенно пока я занят кодом и тестами, я не буду этого делать, даже если документация будут вставляться между операторам. Я, черт побери, занят, не отвлекайте меня. Нет, я не говорю, что написание документации - работа кого угодно, но только не программиста. Это вполне моя работа, но (и это важное “но”) в другой роли.

Роли, блин, роли, вас же учат на ваших этих MBA, что это такое. Так вот, когда пишется код - я злобный мистер Хайд, а в момент написания документации я должен быть милым доктором Джекилом. И переход от одного образа к другому требует времени и сил. 

”- Но а как же актуальность документации!!?”

Ах, я воткну туда тег #TODO Update doc и займусь этим позднее.

Резюме: не отвлекайте меня, или ничего не будет готово.

Вилы вторые вторые.

Еще одна проблема с документацией, о которой почему-то нечасто вспоминают - это то, что есть (как минимум) два вида документации. Инструкция пользователя и инструкция для сервисного инженера. Каждая из них важна, но по-своему и для разных людей.

Для кода инструкция сервисного инженера (программиста) - это комментарии в коде типа “потому что” и спеки (тесты, если вас угодно). Тесты совершенно однозначно описывают как именно это работает, я всегда лезу в тесты если мне что-то непонятно по API.

Комментарии типа “потому что” экономят массу времени и сил при разборе кода-сырца:

  • почему тут обратный индекс? # обратный индекс быстрее, см бенчи
  • почему тут пушится запятая? # тупой API объекта требует запятую в конце

Это бесценно. Если я делаю что-то странное в своем коде - я пишу почему это случилось. В том числе и для того, чтобы рефакторя код, понять, что я ступил и это не проблема, что тут все можно поправить.

Это - те комментарии, которые должны быть в коде. Они короткие, вставлены только по делу и составляют с кодом единое целое. Я пишу их для себя. Так как я хочу, так как мне нужно.

Инструкция пользователя - совсем другое дело. Они только мешаются, захламляя место на экране и раздувая исходный код в 2-3 раза. Им тут не место. Да, именно так!

Ну, послушаете, сначала мы разбиваем все на модули, классы, методы, уменьшаем их до предела, а потом ффигачиваем к каждому 4-х строчному методу шапку из 2-х экранов доков, с описанием типа переменных, возвращаемого значения и примерами с комментариями. Это совершенно неправильно. Нелогично и отвратительно смотрится.

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

”- Но а как же актуальность документации!!?”

Да легко, достаточно простого инструмента, который проверит что все public-методы имеют свою половинку в пользовательской документации. Элементарный матчинг имени метода класса и имени хеш-тега в файле документации. Кстати, добавляете сюда парсинг кода на наши #TODO теги и готово! Я уже подумываю сбацать такое для CoffeeScript.

”- А что если документация все-же стала неактуальна!!??”

Git расскажет вам, что за редиска правила файл класса и не пофиксила доки. Дальше сами.

Резюме: принцип “разделяй и властвуй” более универсален, чем вам казалось, позвольте мне использовать его чаще.

Итог.

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

PS. Я не отказываюсь работать, я отказываюсь заниматься фигней.

Filed under JustMigrated документирование кодинг IT

0 notes &

Как найти все ключевые сцены в видео

Иногда нужно найти в каком-то видео конкретную сцену. Хорошо, если фильм знакомый. А если нет - что, надо все внимательно посмотреть? Нафик, есть способ куда проще !

Берм все тот-же мега-комбайн ffmpeg и сначала выясняем fps видео, оно нам понадобится на втором шаге

ffmpeg -i INPUT_FILE 2>&1 | grep -Po "[^\s]+\sfps"

(это маковский диалект grep, обычный вариант, без ссылки на Perl почему-то дурит с алиасами)

В результате получаем наше fps, которое надо будет подставить здесь - r=23.98

Теперь все готово автоматизировать поиск ключевых сцен, да еще и с проставлением timecode, чтобы потом этот кадр найти на видео. Вот так выглядит команда, выдергивающая перве 20 фреймов (-vframes:v 20)

ffmpeg -i INPUT_FILE -someq -vsync 0 -vf \
drawtext="fontfile=/Library/Fonts/Courier\ New.ttf: \
timecode='00\:00\:00\:00':r=23.98: fontcolor=0xFFFFFFFF:fontsize=18:\
shadowcolor=0x000000EE:shadowx=1:shadowy=1:x=10:y=10",\
select='eq(pict_type\,I)' -vframes:v 20 -f image2 img-%04d.jpg

Да, парамерт fontfile - это путь к фонту на моей машине, укажите свой ttf, если у вас не Mac

Если появится ошибка, попробуйте склеить все в одну строку, должно работать. Фик знает посчему разделение его ломает, никогда особо им не пользовался.

По результатам должно получится 20 фреймов с аккуратными часиками в верхнем левом углу. Если все ок - выкашивем -vframes:v 20 и ждем прохода всего видео.

Ну а потом смотрим картинки каким-нить удобным просмотровщиком и ищем сцену.

Линк на мой ответ на SO

Filed under JustMigrated ffmpeg video

0 notes &

Как сохранить много кадров из видео

В сети куча всяких платных софтин, которые могут делать сохранение кадров из видео. И все они - полный треш.

Истинные джедаи делают это с изяществом из коммандной строки.

Все что нужно - поставить ffmpeg, например через brew.

А дальше все просто:

https://gist.github.com/3368422

Filed under JustMigrated ffmpeg still images video

0 notes &

CLI скрипт на CoffeeScript - легко!
Я уже довольно давно использую coffee-консоль как калькулятор. Удобно!
И вот недавно задумался - почему бы не попробовать написать CLI-скрипт на CoffeeScript от начала и до конца?
Для теста взял свою задачку с пакетным ресайзом картинок. В общем-то есть скрит на bash, но он ужасен и загадочен.
Мне же захотелось сделать приличную утилиту, с хелпом, ключами запуска, красивым выводом инфы и все такое.
На проверку оказалось, что писать на CS для консоли не чуть не сложнее, чем на том же Perl или Ruby, а то и проще:
есть куча модулей на все случаи жизни, которые делают свою работу хорошо
есть npm, который позволяет автоматизировать процесс развертывания и разрешает все зависимости с такой легкостью, что просто дух захватывает
есть асинхронность работы “искаропки”
Примерный вид того, что получилось - на скрине.
Посмотреть код можно в репозитарии на Github.
Установить можно так:
сначала ставим бинарный ImageMagick, откуда там он у вас ставится, если еще нет.
потом делаем

  npm install image-batch-resizer -g


И все. Можно пробовать

  $ image-batch-resizer -d ./image_dir


Быстро, удобно, юзабельно.
С читаемыми исходниками.

CLI скрипт на CoffeeScript - легко!

Я уже довольно давно использую coffee-консоль как калькулятор. Удобно!

И вот недавно задумался - почему бы не попробовать написать CLI-скрипт на CoffeeScript от начала и до конца?

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

Мне же захотелось сделать приличную утилиту, с хелпом, ключами запуска, красивым выводом инфы и все такое.

На проверку оказалось, что писать на CS для консоли не чуть не сложнее, чем на том же Perl или Ruby, а то и проще:

  • есть куча модулей на все случаи жизни, которые делают свою работу хорошо
  • есть npm, который позволяет автоматизировать процесс развертывания и разрешает все зависимости с такой легкостью, что просто дух захватывает
  • есть асинхронность работы “искаропки”

Примерный вид того, что получилось - на скрине.

Посмотреть код можно в репозитарии на Github.

Установить можно так:

  • сначала ставим бинарный ImageMagick, откуда там он у вас ставится, если еще нет.
  • потом делаем
npm install image-batch-resizer -g

    И все. Можно пробовать

    $ image-batch-resizer -d ./image_dir

    Быстро, удобно, юзабельно.

    С читаемыми исходниками.

    Filed under JustMigrated

    0 notes &

    Учим MC русскому в Mac OS X 10.7
Если поставленный из brew (а надеюсь вы только из него все и ставите) Midnight Commander тупит, и не хочет отображать русский язык, то:
Добавляем в .bash_login  
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
+ставим Display bits (Meta+9, Options) в UTF-8

    Учим MC русскому в Mac OS X 10.7

    Если поставленный из brew (а надеюсь вы только из него все и ставите) Midnight Commander тупит, и не хочет отображать русский язык, то:

    Добавляем в .bash_login  

    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8

    +ставим Display bits (Meta+9, Options) в UTF-8

    Filed under JustMigrated Mac OS X mc UTF-8

    1 note &

    Ставим Mac OS X Lion 10.7.4 на Acer TravelMate 4230.

    Гайд по инсталяции Mac OS X Lion 10.7.4 на Acer TravelMate 4230.

    Процесс упихивания новой кошки на мой ноут вышел немного гиморным, поэтому я постараюсь описать подробно проблемные места. Хороших руководств по базовой установке хакинтоша хватает, так что стандарные операции опускаются. Гуглите, если чего-то непонятно. Ну или можно спросить :)

    Да, и помните, ключи -v -f при загрузке - ваши лучшие друзья.

    Важно - все здесь происходящее делается для 32-х битной версии ядра, в 64 бит ноут работать не будет (драйвера на GMA950 не работают в 64 битах). Впрочем, это не важно, сами программы работают в 64 битах нормально.

    Итак, начинаем все с установки iAtkos S3 10.6.3 ver.2. Это хорошая сборка, без выкрутасов встающая на мой ноут. Главное не выбирать ничего лишнего:

    • Bootloader лучше взять сразу Chameleon v2 RC5
    • Bootloader Options - 32 bit + Graphics Enabler
    • Patches - без изменений
    • Drivers - PS/2 и Battery, больше нам ничего не надо
    • VGA - не выбираем ничего, наша GMA950 и так будет работать
    • Network/Wireless - Atheros (но это только у меня, с ebay была куплена карточка)

    Ставить лучше всего на чистый большой диск, создав следующие разделы:

    1. Snow Leopard - отводим 30-40Gb (должно хватить)
    2. Lion - сколько получится (я решил ставить его отдельно)
    3. Installer - 8GB (он потребуется нам позднее)

    Ставим на первый раздел, сюрпризов быть не должно. 

    Теперь следующий шаг, нам нужно обновиться до 10.6.8 (кажется сойдет и 10.6.6, но я выбрал 10.6.8). Но сначала надо подготовится к обновке - скачать AppleACPIPlatform and IOPCIFamily 10.6.7 и разархивировать их, потому что после обновления система не заведется без отката этих двух файлов (версию 10.6.7), они нам еще не раз понадобятся. Далее скачиваем с сайта Mac OS X 10.6.8 Update Combo v1.1 и ставим.

    Если все пошло верно, то система не заведется. Это нормально :) Грузимся с установочного диска и в терминале копируем подготовленные kext-ы в System/Library/Extention, делаем

    diskutil repairPermissions /Volumes/Snow\ Leopard/

    Теперь все должно загрузится.

    Для облегчения процесса сразу меняем загрузчик на Chimera, инсталятор найдете у Tony в разделе Downloads. Кроме того стоит создать smbios.plist, для моего ноута он сделан на модели MacBook 2,1. Как делается - гуглим.

    Продолжаем с установкой, все довольно неплохо описано тут - xMove + MultiBeast: Install OS X 10.7 Lion on any Supported Intel Core 2 or Core i based PC, разве что раздел для инсталлера у нас уже есть. На трекере можно взять образ Lion 10.7. После завершения работы xMove у нас будет Installer, но он не будет грузится, ему нужно сменить kext-ы.

    После замены Installer должен загрузится и начнется установка. По идее все должно пройти спокойно.

    Теперь у нас есть установленный Lion 10.7, который, правильно - не грузится. Но на этот раз кроме подмены 2-х kext-ов нам нужно подправить новоустановленный 10.7, иначе мы застрянем на странице определения клавиатуры.

    Следует сделать следующее - в файле

    /Lion/System/Library/CoreServices/Setup\ Assistant.app/Contents/Info.plist

    нужно удалить 2 строки

    <string>DeviceSection</string>
    <string>KeyboardTypeSection</string>

    Ура, у нас есть живой Лева, но мы хотим его доапгрейдить до 10.7.4.

    Для этого нам требуется скачать с сайта Apple обновление OS X Lion Update 10.7.4 (Client Combo).

    Ставим, перезагружаемся в SnowLeo и снова меняем у Lion 2 kext-а, но этого мало.

    Дополнительно следует из

    /Lion/System/Library/Extention/AppleGraphicsControl.kext/Contents/PlugIns

    удалить ApplePolicyControl.kext

    Теперь система должна грузится нормально, с ключами -v -f. Теперь через MultiBeast, он тоже есть у Tony, сделать USBRollback + поставить VoodooHDA, последняя версия у меня уходит в панику ядра, а вот 0.2.56 ведет себя стабильно.

    Уже почти все нормально, осталось допилить пару штрихов - сделать новый кеш. Этим шагом убиваем двух зайцев сразу, во-первых ускоряем загрузку, во-вторых избавляемся от сообщений, что используемое расширение не авторизовано.

    Вот команда для построения кеша (с добавлением kext-ов из папки extra)

    sudo kextcache -z  -v 1 -a i386 -a x86_64 -m /System/Library/Caches/com.apple.kext.caches/Staup/Extensions.mkext /System/Library/Extensions /Volumes/Snow\ Leopard/Extra/Extensions

    Та-дааммм!!! Встречаем Mac OS X 10.7.4.

    На всякий случай прикладываю содержимое org.chameleon.Boot.plist и smbios.plist https://gist.github.com/2935957

    Filed under JustMigrated Acer hackintosh Mac OS X TravelMate 4230

    0 notes &

    Garmin nuvi 250w - реинкарнацияИтак, решил я тут надысь обновить poi в своем Garmin nuvi 250w и в итоге залил в прибор в папку POI замечательный файлик с расширением gpx. Мне его сгенерил волшебный сервис http://mapcam.info/, ну и я его в прибор, значит.
Как результат девайс сошел с ума и перестал грузится. Но это-то фигня. А вот то, что он перестал определяться системой как диск - это трындец. Такой, с большой буквы. В один момент я получил из умненького hi-tech девайса кусок углепластика, пускающего слюни.
Последовательно было попробовано:
reset кнопкой на корпусе. пофик
hard reset - это выполняется так - на выключенном приборе нажимаем на нижний правый угол, после чего включаем девайс сдвигая рычажек и не отпускаем рычажек + продолжаем давить на экран. Через некоторое время оно поинтересуется, не хотим ли удалить пользовательские данные. удаляем. пофик.
перепрошивка оригинальным обновлятером. тупо говорит, что прошивка повреждена.
перепрошивка лечебной прошивкой от PouchX ( искать их тут http://www.garniak.pl/viewtopic.php?f=14&amp;t=5494 ). пофик.
Грусть-печаль, однозначно.
Но, на радость мне нашелся еще один способ, который сработал!!!
Вот описание методы, там же и ссылки на файло. Довольно не сложно, но есть прикол с оригинальной прошивкой.
Ее вы добываете у garmin, ссылка на файл находится, не поверите, в html-комментарии на странице описания этой прошивки на сайте гармина. Откройте ее сырец, оно там прямо сразу. Первый раз вижу такой оригинальный способ, ага.
Шьете, девайс начинает определся компом. Форматим нафик, потому что непонятно что там теперь у нас, и шьем по-новой нормальной прошивкой.
Кстати, на rutracker.org есть прошивка, которая позволяет писать истинный трек. Мало ли для чего сгодится.
PS. Прямо шас, пока ничего не сломалось, лезем и выясняем hwid, как это сделать написано хотя бы в описании торрента, не вижу смысла повторяься. Почему это важно? Ну, зашьете не тот тип прошики - и превед. Так что я предупредил. Узнайте и запишите, мало ли.
PPS. Не закидывайте на девайс всякой фигни - может выйти боком. Например в POI  - только gpi! 

    Garmin nuvi 250w - реинкарнация

    Итак, решил я тут надысь обновить poi в своем Garmin nuvi 250w и в итоге залил в прибор в папку POI замечательный файлик с расширением gpx. Мне его сгенерил волшебный сервис http://mapcam.info/, ну и я его в прибор, значит.

    Как результат девайс сошел с ума и перестал грузится. Но это-то фигня. А вот то, что он перестал определяться системой как диск - это трындец. Такой, с большой буквы. В один момент я получил из умненького hi-tech девайса кусок углепластика, пускающего слюни.

    Последовательно было попробовано:

    1. reset кнопкой на корпусе. пофик
    2. hard reset - это выполняется так - на выключенном приборе нажимаем на нижний правый угол, после чего включаем девайс сдвигая рычажек и не отпускаем рычажек + продолжаем давить на экран. Через некоторое время оно поинтересуется, не хотим ли удалить пользовательские данные. удаляем. пофик.
    3. перепрошивка оригинальным обновлятером. тупо говорит, что прошивка повреждена.
    4. перепрошивка лечебной прошивкой от PouchX ( искать их тут http://www.garniak.pl/viewtopic.php?f=14&t=5494 ). пофик.

    Грусть-печаль, однозначно.

    Но, на радость мне нашелся еще один способ, который сработал!!!

    Вот описание методы, там же и ссылки на файло. Довольно не сложно, но есть прикол с оригинальной прошивкой.

    Ее вы добываете у garmin, ссылка на файл находится, не поверите, в html-комментарии на странице описания этой прошивки на сайте гармина. Откройте ее сырец, оно там прямо сразу. Первый раз вижу такой оригинальный способ, ага.

    Шьете, девайс начинает определся компом. Форматим нафик, потому что непонятно что там теперь у нас, и шьем по-новой нормальной прошивкой.

    Кстати, на rutracker.org есть прошивка, которая позволяет писать истинный трек. Мало ли для чего сгодится.

    PS. Прямо шас, пока ничего не сломалось, лезем и выясняем hwid, как это сделать написано хотя бы в описании торрента, не вижу смысла повторяься. Почему это важно? Ну, зашьете не тот тип прошики - и превед. Так что я предупредил. Узнайте и запишите, мало ли.

    PPS. Не закидывайте на девайс всякой фигни - может выйти боком. Например в POI  - только gpi! 

    Filed under JustMigrated

    0 notes &

    Стоит ли сыпать сахар? Underscore vs sugarУже неделю не могу определится с toolkit-фреймверком. Ыыыы&#8230;!!!
На выбор есть underscore.js и  sugar.js.
С одной стороны, underscore меньше весит и не занимается греховным делом ака влезание в прототипы базовых объектов.
С другой стороны, в sugar есть разные вкусные плюшки, аккуратное влезание в прототип не так страшно, как его малюют и он ритмичнее читается.

Второй вариант чертовски нативнее для нормального языка, а underscore при чтении вызывает запинку, поворачивая с ног на голову условие.
И вот эта ритмика, мать ее, похоже станет ключевым фактором в выборе sugar, ведь программы пишутся для того, чтобы их читали люди. В этом весь смысл.
Все остальное не так важно, ИМХО.

    Стоит ли сыпать сахар? Underscore vs sugar

    Уже неделю не могу определится с toolkit-фреймверком. Ыыыы…!!!

    На выбор есть underscore.js и  sugar.js.

    С одной стороны, underscore меньше весит и не занимается греховным делом ака влезание в прототипы базовых объектов.

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

    Второй вариант чертовски нативнее для нормального языка, а underscore при чтении вызывает запинку, поворачивая с ног на голову условие.

    И вот эта ритмика, мать ее, похоже станет ключевым фактором в выборе sugar, ведь программы пишутся для того, чтобы их читали люди. В этом весь смысл.

    Все остальное не так важно, ИМХО.

    Filed under JustMigrated

    0 notes &

    CoffeeScript няшечка!Чем больше вожусь с CoffeeScript, тем больше нравится.
Простой пример на CS и raw-JS


Ну, че, все еще ковыляете по скобочкам?

    CoffeeScript няшечка!

    Чем больше вожусь с CoffeeScript, тем больше нравится.

    Простой пример на CS и raw-JS

    Ну, че, все еще ковыляете по скобочкам?

    Filed under JustMigrated