Pull to refresh
4
0

User

Send message
Но всё же, если архитектура подожмёт, лучше иметь такое средство, чем не иметь, не так ли? Бывают и другие случаи. Например, поскольку английский язык мне не родной, я могу неправильно выбрать слово для названия переменной или функции. Особенно, когда речь идёт о бухгалтерских приложениях и прочем матучёте. Живой пример: как назвать уволенного работника? Exempted? Fired off? Discharged? Dismissed? Released? Масса вариантов. В большой команде наверняка есть специально обученные люди, которые дадут однозначный и верный ответ на этот вопрос, и ответ будет записан в глоссарий, которым потом другие будут пользоваться. Так получилось, что я пишу софт один, с недавнего времени, вдвоём. Когда кода много, можно запросто в одном месте использовать одно слово, а в другом другое, и всё это будет выглядеть запутанно и плохо. Или же наступит такой день, когда сей вопрос для меня полностью прояснится, и тогда будет правильно переименовать все функции и переменные как положено. Когда в проекте 10-15к строк, провернуть такую операцию без особого риска причинить collateral damage в коде не так-то легко, даже если используется IDE. Но она, по крайней мере, может сильно уменьшить количество ручных правок.
По-моему, это уже более фундаментальная проблема индустрии, смешивание разнородных технологий и платформ. Некоторые называют это «каждой задаче свой инструмент», но если под задачей понимать слишком маленький юнит работы, получается вот такая солянка из пяти разных языков и парадигм. Зато если во всём этом разбираться, можно стать незаменимым и ценным сотрудником…

Для себя, как уже написал выше, я решил проблему использованием GWT, но понятно, что чаще всего, в случае коммерческой разработки в более-менее долгоживущей компании, выбор уже сделали за вас.
Да, набор возможностей выглядит неплохо. Но отсутствие коммитов с марта настораживает, да и рефакторинг возможен лишь на уровне переименования и вытаскивания классов. Тем не менее, инициатива хорошая, и получилось что-то явно более продвинутое, чем обычный плагин для подсветки синтаксиса.
Бывает, функция оказалась названа неудачно. Банальная малозаметная опечатка, либо же функциональность немного изменилась/расширилась в процессе разработки. Такое случается, и лазить с грепом по всему коду не всегда оказывается продуктивно. Или были две функции с одинаковым именем (например, add), но разными аргументами, на какой-то стадии разработки стало ясно, что их поведение теперь значительно отличается (одна стала более интуитивно понятна как insert). Переименовать одну, не затронув другую, без IDE затруднительно.
Похоже, этот плагин:
1) Windows-only. http://insenvim.sourceforge.net/portlinux.htm — тут, в сломанном HTML, можно прочитать: «We don't have for Linux, but want to port. It
may be tough, but any help is appreciated.». Увы.
2) Не обновлялся с 2006 года, уже 10 лет.

Боюсь, даже если он заведётся и будет работать с современным вимом, вряд ли там будет поддержка возможностей языков, которые они получили за последние 10 лет. А у Java уже две версии как минимум вышли…
Не пишу на JS, использую GWT, он пишет за меня. Разумеется, всё это очень субъективно. Например, в JS провести рефакторинг автоматически вряд ли возможно в принципе, так что тут и обычного редактора хватит. Слишком уж динамический язык. Зато поддержка удобного и быстрого деплоя и хорошая работа с DVCS будет плюсом. Хотя опять же, я ничего более функционального, чем EGit в Eclipse, пока не встречал. Git-Cola больше всех к нему приблизилась, но возможности ручного редактирования индекса в ней нет, к сожалению, да и push часто виснет намертво. Изредка бывает надо закоммитить что-то, чего нет в рабочей копии.

В целом же, после обвешивания плагинами Vim/Sublime/Emacs получится та же IDE. Не факт даже, что более быстрая при той же функциональности, а скорее всего, менее функциональная, и причины этого я уже описал. Так что стоит ли овчинка выделки, каждый решает сам.
На мой взгляд, основная проблема использования Vim/Emacs вместо IDE в том, что они не понимают язык, с которым работает программист. Для редактора это всего лишь текст, он не понимает функции, не понимает синтаксис, не может вывести типы и подсказать параметры для конструктора или метода. Один этот печальный факт для меня перечёркивает все остальные достоинства. Да, Vim быстрый, удобный (если привыкнуть), есть масса плагинов для всего на свете, как и у емакса, подсветка синтаксиса и прочее. Но когда поработаешь достаточно долго в Eclipse или Qt Creator, понимаешь, сколько времени и сил может сэкономить умная IDE.

Например, помимо уже упомянутого переименования с учётом контекста (переменная i превращается в counter только в текущей области видимости, а не по всему коду), и в Eclipse CDT, и в Qt Creator можно выделить фрагмент кода и вырезать его в отдельную функцию. При этом IDE автоматически выведет необходимые параметры для функции и даст им имена, а также выведет тип возвращаемого значения, на месте же фрагмента кода появится вызов новой функции со всеми нужными параметрами. Ваш редактор такое может? (смайлик) На самом деле, редактор такое и не обязан уметь по определению, он всего лишь работает с текстом и не разбирается в том, что в каких-то языках есть строгая типизация, в каких-то нет, и в некоторых случаях можно попытаться угадать, что в данном месте можно написать, учитывая информацию из стандартной библиотеки, синтаксиса языка и видимости функций, переменных и классов в данной точке кода. Простая подсказка по аргументам функции сама по себе здорово экономит время и нервы, т.к. в хорошем коде по именам параметров и их типу уже ясно, что функция хочет. В документацию лезть приходится в разы реже.

Конечно, тут можно привести много контраргументов, например, можно выдавать подсказки по javadoc/jsdoc/phpdoc/etc., а если таковой док не написали, значит, программа/программист плохи, код не документирован и вообще, ваша проблема не в этом. Тем не менее, к хорошему быстро привыкаешь, как вы сами заметили, и хочется носить свой комфорт с собой. Как бы ни тормозили IDE, они тормозят с благой целью. Постоянно поддерживать актуальные знания о всём коде — не самое дешёвое занятие. Поэтому лучше проапгрейдить железо, переехать на SSD, но сохранить удобство понятливой IDE, чем мириться с отсутствием рефакторинга и банального поиска по коду с учётом языка. Например, нужно найти все вызовы метода run() у объектов класса SomeDataProcessor и только у них. Таких методов может быть масса у самых разных классов, включая системные, и редактор для этой задачи бессилен.

Так что я использую Vim по его первоначальному прямому назначению — для быстрого редактирования текстовых файлов, обычно конфигов. И с этим он справляется просто замечательно.
>Поверьте, аудитории хабра можно написать так, чтобы ей было интересно и чтобы она читала ваши посты. Даже про конверсию, рекламу, маркетинг.

Пожалуй, тут стоит упомянуть блог МосИгры (https://habrahabr.ru/company/mosigra/) как эталон интересных рассказов про постройку бизнеса с нуля и связанные с этим перипетии. Они охватывают довольно широкий круг тем, но при этом не публикуют ничего из рандомного научпопа. Так что рассказам про маркетинг, дизайн, интерфейсы и игры почитать-поучиться стоит.
Обычного TOTP хватит бы всем™, а реализацию уже можно выбирать, главное, стандарт открыт и доступен. Кого-то устроит гугловский аутентификатор, кто-то купит брелок, да и на Pebble есть QuickAuth, с часов удобно коды вводить.
Видимо, потому что это слишком сложно для среднестатистического пользователя. Тем более, сохранение пароля в браузере перестанет работать (точнее, станет отчасти бесполезным/неудобным). У очень большого числа людей вообще один и тот же пароль везде, а тут не просто потребуется заводить разные пароли на разные ресурсы, но и помнить, где и как они меняются…
Если иметь достаточно большой словарь, не всё так плохо. Допустим, генератор использует словарь из тысячи слов, тогда 10 случайных слов оттуда дадут пространство в 10^30 вариантов или почти 100 бит (это если считать, что регистр не учитывается), что примерно эквивалентно случайному 16-символьному буквенно-цифровому паролю (английские буквы обоих регистров). Но со словами следует учитывать, что частота букв не играет никакой роли, ведь единицей пароля является слово, а не буква.
Физику тоже сначала на дискретной железке считали, потом перевели на видеокарту. Похоже, со звуком будет то же самое, хотя обсчитывать звук на видеокарте несколько иронично. Но сейчас ведь большинство игр cpu-bound, т. е. видеокарта все равно недогружена, а с приходом вулкана с его многопоточностью открываются интересные перспективы.
karpathy.github.io/neuralnets — вот самое лучшее объяснение на пальцах, без трёхэтажных формул (есть двухэтажные, но они разжёваны до уровня школьной арифметики), прямо с основ, с примерами из реальности и с кодом. Требуется знание арифметики и понимание JS, ну или любого C-подобного кода, просто примеры на JS. Ничего лучше не читал по теме, жаль, что автор не написал книгу в таком стиле, я бы купил.
Мне кажется, это не авторские права, а смежные. Авторские никто у Шаляпина не отнимет.
>в одной директории невозможно создать директорию и файл с одинаковыми именами.

А в Windows разве можно? Я вот попробовал, не вышло: i.imgur.com/VdvBo9l.png
Тестинг не сильно отличается по номерам версий от bleeding edge, являясь по факту rolling release. Стабильность работы (в пользовательском понимании) меня вполне устраивает, но в последнее время из тестинга стали пропадать пакеты по непонятным причинам. Кроме Криты убрали ещё и tzdata-java, и это только из того, что заметил.
Так я не предлагаю это проталкивать в сам Debian, слишком много мороки. Просто сделать отдельный собственный репозиторий наподобие PPA и дать инструкции по добавлению его в sources.list.
Спасибо за развёрнутый ответ! Я думаю, репозиторий с appimage было бы несложно организовать, чтобы программа просто ставилась одним файлом куда-нибудь в /opt/krita3, например, и создавала симлинк в /usr/bin. Он бы подошёл и для Ubuntu всех версий, и для Debian, и для других его производных.
Кстати, уже после написания комментария заметил на кикстартере ссылки на appimage-сборки. Конечно, я бы предпочёл единую систему установки и обновления через пакетный менеджер, но если нет возможности поддерживать репозиторий, такой вариант наилучший из возможных. Скачал, запустил, всё работает. Скажите, вы планируете регулярно обновлять appimage на сайте?
Её и из Qt 5.6.0 выкинули, я недавно столкнулся. Информации толком нет о проблеме, просто при инициализации не может найти функцию Direct3DCreate9Ex (появилась в висте). Так что 5.5.1 — последняя, что работает на XP.

Криту поддерживал на прошлом кикстартере, к сожалению, результата так и не увидел — в дебиане до сих пор 2.8.5, да и та в stable, а из тестинга почему-то убрали. С удовольствием бы задонатил на поддержку репозиториев для дебиана, пробовал сам собирать, но там надо кучу компонентов KDE сначала собрать, в итоге забил.

Information

Rating
4,648-th
Registered
Activity