Category: отзывы

Category was added automatically. Read all entries about "отзывы".

усы2

Универсальная раскладка (скачать)

Выложил раскладку из предыдущего поста для Мака https://github.com/tonsky/Universal-Layout

Немного подвигал еще буквы и пунктуацию, теперь запятая, точка, восклицательный знак, вопрос, точка с запятой, двоеточие, двойная и одинарная кавычки — все на дефолтном слое (без шифта). Буквы Б, Х и Ю уехали со своих мест, но недалеко — не теряйте их.

Из фидбека к посту взял идею, что № не нужен и вместо него даже в русской раскладке лучше # (потому что хэштеги).

Также здесь включена «машинопись», т.е. цифры набираются с шифтом, а символы на цифрах — без шифта. Это жутко удобно, т.к., как показывает статистика, цифры набираются сильно реже. Тут пруфы. Я, собственно, с 2015 года так и сижу.

По Option (Alt) включается Типографская раскладка Бирмана, не пугайтесь. Это тоже очень хорошо зарекомендовавшая себя на практике штука, если привыкнуть — длинные тире, правильные «кавычки» и другая всячина набирается так же беспроблемно, как и обычный текст. Я разбавил её буквами Ё и Ъ, которые теперь тоже живут на Альте.

Картинка:

Будем считать это версией 1.0, жду звездочек на гитхабе, отзывов и советов.

Understanding ClojureScript

Попробовал Кложускрипт (картинка), ощущения интересные — действительно, пишешь почти что на нативной Кложе, а работает всё в браузере. Все коронные плюшки для трансформации данных под рукой, никакому underscore.js не снилось. Уже даже allocation-free reducers [0] можно попробовать.

Однако, когда дело дошло до DOM-а, событий и взаимодействия с браузером, опыт оказался совсем не таким приятным. Google Closure (внимание на буквы — closure и clojure — так уж совпало) вещь не самая дружелюбная — мнгословная, избыточная, незнакомая, с тупой документацией (я больше по jQuery прикалывался, но Рич её заклеймил в презентации), да и в Кложескрипте нормального моста к ней сделали, т.е. еще и интероп в Джаваскрипт получается.

Итак, хорошей получилась Кложаскрипт или нет? Стоит ли всем на нее перебегать, в срочном порядке учить синтаксис Кложи, и т.п.? Эта статья про понимание, коммуникацию, важность наличия цели и наличия правильной цели. Мне кажется, тут закопаны нетривиальные, неочевидные, но важные вещи, которые я для себя открыл и мне хочется, чтобы вы тоже открыли.

Зачем вообще есть кактус? Хрен бы с ней, с Google Closure, почему, действительно, не взять jQuery, на котором минимум половина интернета работает? В интернете почитал таких же недовольных [1], и вроде все правильно, вроде как Рич ошибся, не понимает он в клиент-сайде, взял самое корявое, что можно было взять. Так, да не совсем так.

У Кложескрипты есть на сайте Rationale [2, 3] (и в презентации [4] Рич то же самое проговаривал), которые через бывалый интернет-мозг проскакивают почти не задерживаясь — намерения хорошие и правильные, но не достаточно «вкусные», «модные», да и все в таких вещах пишут, что всё будет хорошо, а на деле у кого что получается. Ну, короче, не показатель, люди вы хорошие, давайте посмотрим, а что вы сделали. Ууууу, неудобно-то как. Пойду выплесну.

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

Рич когда-то сказал [5] очень умную вещь, когда его про Custom reader literals спрашивали, а хрен ли в Кложе нельзя ридер хакать, какой же это Лисп получается? Ответ был, что ему хочется сделать хороший библиотечный язык, чтобы вещи, создаваемые разными разработчиками на Кложе, стыковались в конечном счете друг с другом. Кастомный ридер эту идею намертво бы похоронил, как с оригинальным Лиспом и случилось, все разбежались по своим углам и каждый ковырял свой мотоцикл.

Кложаскрипт, как младшая сестра большой Кложи, эти цели унаследовала. Сегодня разработка на Джаваскрипте — это такое ковбойство, Дикий запад, кто на что горазд. Coffeescript, например, ничего в этом смысле принципиально не решает — упрощая синтаксисис и подстеливая соломки поверх очевидно опасных ям, он оставляет семантику нетронутой.

Кложаскрипт, к примеру, дает namespaces, а значит, библиотеки совершенно разных людей можно будет собрать и заставить работать вместе. (most boring feature ever, как было в одной презентации [6] — Kevin Lynagh нашел всего три упоминания неймспейсов на ХакерНьюз, мало кто видит их важность).

Дальше, оптимизирующий компилятор из Google Closure — если ты тянешь библиотеку ради одной-двух функций, то ты только их и получишь в итоговом коде. Поклонники jQuery, думающие, что их это не касается, вспомните, как jQueryUI в силу своего размера столкнулись ровно с этой проблемой, пришлось писать себе велосипед. Но самое главное, что неймспейсы и зависимости встроены в семантику языка — то есть ковбойство закончилось, один стандартный способ уже есть.

Дальше, мол, критикуют за то, что кто её знает, Google Closure эту, все на jQuery пишут. Это действительно так, но штука в том, что Кложаскрипт не создавалась ни для какой из существующих ниш — она нацелена на создание новой, еще никем не заполненной ниши — большие и сложные, десктопного класса приложения в браузере, где скоро возникнет потребность в инструментах. Действительно, jQuery удобен для маленьких сайтов, но есть ли примеры его масштабирования до приложений уровня GMail/Google Docs? У Google Closure, получается, есть. И во-вторых, очень правильно открывать новые горизонты для браузерных приложений, это гораздо важнее, чем топтаться по сто лет назад истоптанной земле кнопочко-фреймворков и маленьких сайтов. С маленькими сайтами проблем уже нет, давайте смотреть, где настоящие, нерешенные проблемы еще остались.

То есть, пока обычные люди видят проблемы Джаваскрипта в том, что можно написать == вместо === и получить приведение типов (баги, производительность), хипстеры — в неудобном синтаксисе записи классов (кто бы еще объяснил, зачем они вообще нужны, однако все их переизобретают заново), Рич пилит свой велосипед в сторону объединения усилий разработчиков, которые сейчас тянут телеги в разные стороны, и в сторону расширения возможностей браузерных приложений. Лично я в восторге от того, какой железной рукой он ведет Кложу[скрипт] к цели, которую прекрасно осознает и может сформулировать. Если бы этот человек в свое время придумывал Джаваскрипт, мы сегодня жили бы в куда лучшем мире, поверьте мне. Самое обидное, что мало кто понимает, в чем реальное достижение Кложескрипты состоит.

[0] Пост про allocation-free reducers, еще один.
[1] Обсуждение «недостатков» Кложескрипты. Цитата из топика, Рич:
Seriously, this is like being disappointed an action movie was an action movie instead of a comedy. Your expectations are a complete mismatch for the intentions of ClojureScript.
...
ClojureScript is an action movie, and we're interested in helping people kick butt.
[2] Rationale Кложескрипты
[3] Rationale использования Google Closure
[4] Первая презентация ClojureScript, где моменты из Rationale перечисляются еще раз
[5] Интервью про Clojure 1.4, extensible reader, в котором говорится про «библиотечную» ориентированность Кложи
[6] Выступление Kevin Lynagh про использование Кложескрипт в жизни.

P.S. Передача знаний о работе с Джаваскриптом подрастающему поколению:

(no subject)

Устанавливаете родителям https://secure.logmein.com/products/free/.

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

Весь комплект почему-то бесплатен.

Профит.

Переключение раскладки CapsLock-ом для Мака

Зачем: КапсЛок — бесполезная клавиша в очень удобном месте. Переключать раскладку одной кнопкой очень удобно.

Как: Можно наверное скачать какую-нибудь специальную программу-демона, но я не люблю ставить ничего лишнего — программы как дети, ломаются, болеют, за ними надо смотреть, и чем их больше, тем труднее. К счастью, можно обойтись штатными средствами.

1. Скачиваем PlistEditPro.

2. Открываем с его помощью файл ~/Library/Preferences/ByHost/.GlobalPreferences.000d-что-то там. Учтите, что это скрытый файл, так что так просто его в диалоге не выберешь, проще из терминала:


  cd ~/Library/Preferences/ByHost
  /Applications/PlistEdit\ Pro.app/Contents/MacOS/PlistEdit\ Pro .GlobalPreferences.2ED2F52A-AEF9-56EE-A155-15190BFB7C5F.plist


3. Находим или добавляем раздел com.apple.keyboard.modifiermapping и дописываем туда маппинг 0 → 5 (CapsLock → KeyPad0, см. также БОНУСЫ):

<key>com.apple.keyboard.modifiermapping.1118-219-0</key>
<array>
  <dict>
    <key>HIDKeyboardModifierMappingDst</key>
    <integer>5</integer>
    <key>HIDKeyboardModifierMappingSrc</key>
    <integer>0</integer>
  </dict>
</array>


4. Перелогиниваемся.

5. Идем в System Preferences и ставим комбинацией на переключение раскладки CapsLock (он теперь при нажатии будет генерировать нажатие KeyPad0 — тоже не самая востребованная кнопка).

БОНУСЫ


1. Можно обойтись и без PlistEdit Pro:

  plutil -convert xml1 -o keys-xml.plist .Global…
  vim keys-xml.plist
  plutil -convert binary1 -o .Global… keys-xml.plist


2. Список всех кодов, которые можно перемапить:

None:         −1 (этим можно отключать кнопки)
Caps Lock:     0
Left Shift:    1
Left Control:  2
Left Option:   3
Left Command:  4
Keypad 0:      5
Help:          6
Right Shift:   9
Right Control: 10
Right Option:  11
Right Command: 12

Я не исследовал, возможно там и все остальные кнопки есть.