• Использование преимуществ TypeScript в JavaScript разработке
    0

    Good Parts мне понравилась больше, чем jslint, но тоже не целиком.

  • Использование преимуществ TypeScript в JavaScript разработке
    +3

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


    Я вот тоже примерно так раньше рассуждал — сдалась мне ваша типизация, [] == false, лол, «белки истерички.jpg». Очевидно, явная типизация от багов в логике не спасает, против этого только тесты. Зато она спасает от лишней нагрузки мою голову, которую я могу приложить на написание ну хоть тех же тестов.
    Все дело в том, что явная типизация — это как документация, в которую не надо лезть. Перепутал порядок аргументов? опечатался в названии метода? Не помнишь, принимает либа число или строку, массив или словарь? Вернул не то значение из функции? Все это видно сразу прямо в IDE, без выпадения из потока на время запуска тестов и сборку фронтендом.


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


    Теперь что касательно js-doc. Это бы работало, если бы это был синтаксически зафиксированный стандарт. На деле кому-то пофиг, кто-то не в курсе, что IDE понимает jsdoc, кто-то упарывается каким-то кривым docco или еще какой дрянью, кто-то пишет под closure compiler и у них своя атмосфэра, кто-то пишет в VS, которая всего года три назад понимала только свой формат комментов, а комменты все стерпят, вот и пишут кто во что горазд, а потом интеллисенс не работает. Явная типизация берет на себя роль зафиксированного, понимаемого всеми сторонами синтаксиса документации.

  • Использование преимуществ TypeScript в JavaScript разработке
    +1

    Не взлетел, потому что барахло по объективным причинам. Тайп-чекинг, ЕМНИП, там очень выборочный; с IDE не интегрируется; аннотации не совместимы с js-doc; сжатие… ну когда-то лидировал, сейчас примерно на равных с uglify. Плюс они ухитрились сделать неудобный cli.

  • Использование преимуществ TypeScript в JavaScript разработке
    +4

    Крокфорд пользуется огромным авторитетом в сообществе, но я как вспомню его ненастраиваемый jslint c куцым набором правил, половина из которых — субъективная вкусовщина...

  • Использование преимуществ TypeScript в JavaScript разработке
    0

    Почему-то в WebStorm у меня эта история с @ts-check не завелась: TypeScript не ругается и IDE не подчеркивает. Хотя если просто описать интерфейсы в отдельном .ts и прописывать типы в js-doc, то интеллисенс здорово умнеет.

  • Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX
    0

    Я не помню, чтобы у кого-то баттхертило (наверное потому что я тогда еще не ходил linux.org.ru) от XUL.
    Да софта на нем было было не в пример меньше.

  • Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX
    +2

    Перспективную эту штуку щас добивают в мозилле:)

  • Скажи «нет» Electron! Пишем быстрое десктопное приложение на JavaFX
    +9

    Думаю, таких статей можно написать по числу языков программирования. Каждый пишет на том, что знает. Никто не будет изучать Java и JavaFX/C# и WPF/Лелика и Болика только чтоб написать одноразовый просмотрщик логов с полутора юзерами, все сделают на том, что знают.

  • В абзаце всё должно быть прекрасно
    +5
    Особенно печально это видеть на «читалках» — устройствах, как бы претендующих на вытеснение бумажной книги. Переносы не расставляются, отсюда возникают ужасающие дыры посреди текста или драный правый край. QReader на моей древней Nokia 3250 умел вполне сносно расставлять переносы. Эта опция ведь связана отнюдь не со слабенькой вычислительной мощностью читалок, не так ли?

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

  • «Энтерпрайзная срамота» или как свести с ума разработчика на собеседовании
    0

    Собственно, о чем и речь.

  • «Энтерпрайзная срамота» или как свести с ума разработчика на собеседовании
    +1

    Кадровик, конечно, исконно русское слово:)


    Просторечие — это «я с алюминия выточил деталь». А англицизмы в программерской речи
    — жаргон (впрочем, разница для не-лингвиста минимальна).

  • Пора убить веб
    +9
    Flux, последнему модному веб-фреймворку от Facebook

    В вебе минули геологические эпохи с тех пор, как Flux был последним и модным (не то чтобы пришедшее на замену шибко лучше, но все-таки).


    На C++ невозможно написать безопасный код, а виноват, конечно, веб, ну да.


    Веб, со всеми его недостатками, с REST-ом, Flux-ом и прочим грузом, по факту оказался самой удобной системой доставки контента и приложений (что, впрочем, трудно разделить, потому что современный контент требует интерактива (привет, комменты на хабре), а приложения работают с контентом (well, duh)).


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

  • Сравнение взятия из кэша одного и того же файла с помощью fs.readFileSync и fs.readFile (и чтения множества файлов)
    0

    Вроде как суть в том, что при readFile мы можем запустить другие операции (реагировать на http-запросы, посылать запрос в БД или там считать факториал), а при readFileAsync — нет.

  • Paraquire, или Перестаньте доверять библиотекам
    0

    Может быть вместо этого проксировать встроенные модули, в хэндлере try {throw} catch, по стэку смотреть, откуда была вызвана функция и либо разрешать и делать что попрошено, либо пробрасывать исключение наверх… Хотя не, производительность просядет, наверное...

  • Немного о псевдомассивах (массивоподобных объектах или коллекциях). «Что это?», «Как с ними работать?» и прочее
    0

    Ноги у "псеводомассивов" растут из первой версии языка, в которой собственно массивов не было, а DOM-интерфейс содержал списки элементов.
    Хэш-таблица это просто один из способов организации словаря и собственно называть так любую key-value структуру особо смысла нет — внутри может быть хэш-таблица, а может и не быть.

  • Реализация и альтернатива основных JQuery функций на чистом JavaScript
    +2
    $(document).ready( Function )

    реализуется вообще без единой строчки JS — перемещением скрипта в конец документа, перед </body>:)

  • Пять инструментов отладки JavaScript, о которых полезно знать
    +3

    На medium.com не так много откровений, как кажется:)

  • Основные ошибки accessibility при разработке сайта
    0

    О, эта программа у них еще жива! отлично.


    Нет, у нас только IE11.

  • Основные ошибки accessibility при разработке сайта
    0

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


    Поддержка WAI-ARIA сломана во всех версиях IE вплоть до 11

    Ну не знаю — то, что мы хотели, у нас в IE11 работало на таком же уровне, как в FF и Chrome.

  • Уменьшение размера файла сборки Android в Unity
    0

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


    Чисто теоретически, вероятно, можно написать шейдер, который рисует вектор (читая PostScript из текстуры?).

  • Как я написал мобильное приложение на react-native
    0

    А можно потом эти компоненты как-то переиспользовать для веба? Ну то есть понятно, что можно напрячься (можно ли?) и самому написать реализацию всех этих <Image/> и <ScrollView/> на div'ах, но, может, есть готовое?


    P.S. Снимаю вопрос, плохо гуглил: https://github.com/necolas/react-native-web

  • Основные ошибки accessibility при разработке сайта
    0
    Если я тотально слепой человек и пользуюсь программой экранного доступа семь лет, может я понимаю, о чем говорю?

    Ваш тон и ваш подбор слов это не извиняет, даже если это и правда.


    И я повторяю вопрос: как данная тема относится к текущей публикации?

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

  • Основные ошибки accessibility при разработке сайта
    0
    Я не знаю, где вы взяли такой бред.

    А я не знаю, где вы взяли свои манеры, но крайне рекомендую обратиться туда с рекламацией и потребовать деньги назад.


    Видимо, вы не являетесь незрячим человеком

    Интересно, что вас навело на эту мысль? Уж не то ли, что я заметил испорченные шрифты и мигающий курсор?


    Большинство незрячих людей пользуются спокойно Mozilla Firefox и не знают горя.
    Jaws является известной, но не самой часто используемой программой.

    У вас свои источники, у меня свои.


    Нажатием на клавишу CTRL любой синтезатор можно остановить, нажатием на SHIFT — поставить на паузу.

    А вы сами пробовали это?


    Самыми распространенными синтезаторами для NVDA являются Ispeak, Newfon, RHVoice и голоса для SAPE5, например Милена.

    Аналогично, вы сами их пробовали?

  • Основные ошибки accessibility при разработке сайта
    0

    Самое главное — попробуйте сами свой сайт через IE и NVDA (щас расскажу почему), узнаете много интересного о себе и о своем коде.


    Jaws является самой популярной программой среди слепых пользователей, но на самом деле она ужасна:


    • ломает рендеринг шрифтов
    • иногда без спросу добавляет раскладки
    • курсор в полях ввода начинает мигать с адской частотой

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


    В NVDA таких проблем нет, плюс бесплатно. Синтез речи там немного похуже, но в любом случае надо в настройках включать Microsoft TTS, остальные все кромешный мрак.


    Ни тот, ни другой софт не позволяют поставить себя на паузу. Поскольку кодить под аккомпанемент роботического голоса, произносящего каждую нажатую клавишу нереально, проще всего отрубить софтине звук через микшер.

  • JavaScript как праздник
    0

    Да тут уже была статья на этот счет, в комментах хором сказали «а собсно зачем»? Да, он не везде нужен и много где можно без него, но насильно отказываться смысла нет. ООП и в частности инкапсуляция придумана не дураками и имеет свои удобства. Серебряной пули нету, надо уметь сочетать парадигмы:)

  • JavaScript как праздник
    0

    Не исключено, что это именно то, что имел ввиду автор.

  • JavaScript как праздник
    +8
    Можете наследовать через классы, можете через прототипы.

    Тот неловкий момент, когда забыл, что классы в JS работают через прототипы...

  • JavaScript как явление
    +6

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


    Никакого глобального заговора корпораций нет. Сидите спокойно в своем OTP.

  • Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы
    0

    Не ко мне вопрос:)


    Если честно, я очень плохо разбираюсь в этой нотации, но у меня ассоциации в сочетании со словом "собеседование" совершенно однозначные.

  • Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы
    0

    тьфу, да что такое со мной:( простите. Вот:
    https://habrahabr.ru/post/196560/
    https://ru.wikipedia.org/wiki/%D0%92%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D0%B0


    Ну и в общем, гуглится по "о большое сложность алгоритма".

  • Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы
  • JavaScript без this
    +1

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


    Но, повторюсь, если кто-то ниасилил this в JS по десяткам статей, появляющихся каждый год, то разница минимальна.

  • JavaScript без this
    +1
    Например — стрелочные функции и привязка this. Как результат, при разработке можно практически полностью обойтись без this.

    Вообще-то если не обращаться к this, то стрелочная функция ровно ничем не отличается от обычной:)


    Дальше можно не читать, в общем.

  • Простая валидация формы без JS
    0

    Валидация это не новость. А вот попробуйте покопаться в autofill/autocomplete, вот где веселье-то.

  • ЖивоСкрипт — язык программирования для детей 12+
    0
    Строки четырех типов: с одинарными и двойными кавычками, для id-имен и для имен css-классов

    Вот это очень странно. Если решение выделить отдельный тип для CSS-селекторов (причем для всех сразу, а не для ид (которые вообще-то не стоит использовать бы) и классов) еще можно натянуть, то различие между " и ' от меня напрочь ускользает.


    В остальном прикольно, большая работа. А на живых детях пробовали?

  • Графика для инди игр. Что делать если кругляшки и палочки вас не устраивают
    +1

    И еще


  • Графика для инди игр. Что делать если кругляшки и палочки вас не устраивают
    +2

    https://opengameart.org/
    Но там, как и везде, либо 5 штук, но очень красиво, либо 10 и в общем неплохо, но совсем в другой стилистике, либо 50, но вырвиглазно.

  • Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2)
    +5

    Такая же ошибка. ООП !== статическая типизация.


    В остальном, в принципе, согласен.

  • Два года с Dart: о том, как мы пишем на языке, который ежегодно «хоронят» (часть 2)
    +2
    Но на JS плохой код писать проще, чем на языках с ООП.

    Такое замечание сильно дискредитирует статью.

  • Переосмысление JavaScript: Смерть for
    +1
    Вот интересно, почему map/reduce медленнее циклов?

    Да просто вызов функции это относительно дорого.
    А еще все эти map/reduce/forEach делают кучу дополнительных проверок на каждом шагу, потому что должны работать с разреженными массивами, с массивами, в которых кто-то напихал кастомных свойства и прочими граничными случаями. Я не помню, как называлась либа, но там были на порядок более быстрые реализации всего этого дела — но которые работали только с «нормальными» массивами.


    Ведь любой map можно разложить в эквивалентный ему цикл for
    Теоретически можно транслировать map в for на лету

    Мне кажется, это возможно только если итератор — чистая функция...


    Ну ладно, map мы разложили в for автоматом, а если гений типа автора написал filter().map()? В общем, по хорошему, нужна поддержка частых ФП-паттернов, всяких там трансдьюсеров, и, возможно, у авторов движков дойдут до этого руки, если это станет достаточно частым сценарием.