В основном reddit, github. Активность на https://github.com/neovim/neovim. То же количесто звезд — 21К у неовим против 8К у вим. Такие монстры как Shougo переписыват свои плагины под nvim.
VimScript не самый лучший язык, префиксы переменных и функций главный wtf per minute, но писать плагины и тем более конфиги на нем в полне можно. А вот elisp для меня, это какое то безумие. Везде эти скобки, какие то названия типа setq, конструкции типа (+ 1 2). Скажу честно, дальше бездумного копи-паста я не осилил.
Если бы… И что вообще тут мудрого? То, что программисты должны писать код без ошибок — это вообще наиглупейшая мысль. Человек не может держать в голове все логику среднего+ проекта.
Извиняться перед тестировщиками… Какому мудрецу это вообще могло в голову прийти? Извиняться за то, что нормально? Их профессия, как результат понимания того, что в текущих реалиях без ошибок никак.
Вы же понимаете, что если я до передачи задачи в QA, проверю все возможные тест-кейсы, то после меня эти же кейсы (как минимум) проверят они? Вам не кажется, что это нерационально?
Про стопроцентное покрывание тестами я уже написал, это гиганская работа. По опыту, на написание тестов уходит столько же времения (а то и больше), как на саму фичу.
К тому же, автотесты — не панацея. Как по мне, то они вообще не для этого. Они для того, чтобы программист мог спокойно рефакторить проект. И быстро находить, где и чего он поломал.
Я считаю, мудрый ПМ — это человек, который всегда держит в голове то, что ошибки будут. И выстраивает рабочий процесс, отталкиваясь от этого. Не летает в облаках, не надеется на удачу, не думает, что он сможет заставить программиста писать без ошибок.
Не хочу писать слишком большой комментарий. А так, тут поле не паханное, извините, подобного бреда.
Как будто мой ПМ писал. Работай больше, проси меньше. Ошибок в коде быть не должно, тестировщики не для этого там сидят. Учись сам, в свободное время, компания не обязана это оплачивать. Проблемы начальства — твои проблемы, твои проблемы — твои проблемы. Ты должен всем, не, серьезно, всем! Тебе никто и ничего.
Каждый кусок кода должен быть протестирован для всех возможных ситуаций. Если это делать вручную, — у вас не будет времени на разработку
Этот человек хоть один автотест написал? Он знает на сколько это трудоемкая задача?
Вообщем, Вы извините, но статья жуткая «вода». Местами уровня папблика вконтакте.
Честно, я особо не знаком с dagger1. Отказался от него на фазе research. Как минимум, тут тоже нужно перечислять все классы которые я собираюсь инжектить. И для меня критично использование рефлекшена, обратного я не говорил. Ну и кончено, мысль от том что гугл собрался переписать этот фреймфорк намекала что с ним не все хорошо)
Если у Вас только тестовый модуль то вы конечно можете замокать. У меня проект где провайдеры могут быть заменены не только в тестах но и в расширениях (вся логика приложения находится в библиотеки (aar), а уже на ее основе создаются приложения(apk))
Так сразу видно что куда инжектится, понятен скоуп зависимостей и вот это всё.
что если вам нужно проинжектить класс с разными скопами?
Не понятно для какой области проекта будет использован
Тут все описано. Скоп можно указать как аргумент аннотации @MetaEntity(ext = RestManager.class, scope=AppScope.class), а можно указать дефолтный в настройках.
что если у TestRestManager есть параметры, про которые DI не знает?
Простите, о каких параметрах речь?
для меня это библиотека для DI, наиболее натурально встраивающаяся в язык
На самом деле рад что Вас все устраивает. Как в анекдоте, «Если все работает — #%& трогать»
Я не согласен с тем что зависимости легко подменять, по крайней мере в версии 1.0. Мне приходилось оборачивать все провайдеры в отдельный класс и передовать его (или подменять тестовым) в модуль:
@Module
public class RestModule {
protected final RestModuleProviders providers;
public RestModule(RestModuleProviders providers) {
this.providers = providers;
}
@Provides
RestManager provideRestManager() {
return providers.provideRestManager();
}
}
Как это делается в Jeta:
@MetaEntity(ext = RestManager.class)
class TestRestManager extends RestManager {
//...
}
И вы меня простите конечно, но о каком удобвстве можно говорить, когда вам предлагают писать inject(MyThousandthClass c) для каждого класса где вы используете инжекцию?
В остальном в Jeta DI все соблюдено, никакой мета-магии, все классы сгенерированны, читаемы и легко дебажатся. По возможности все ошибки проверяются в compile-time, и все зависимости, провайдеры и скопы определяются там же.
Вообще, когда мы говорим о рефлекшене в DI, я думаю мы подразумеваем нахождение элементов с аннотаций @Inject используя Java Reflection API, не Class.forName(). Потом, ClassForNameMetasitory не основной класс библиотеки, скорее на всякий случай, в документации его нет. Тем не менее, основной класс-metasitory — MapMetasitory, но он тоже использует c Class.forName(). Но, если вопрос принципиальный, то можно и это обойти просто создав сгенерированный MapMetasitoryContainer как в статье создается DaggerAppComponent.
Хотя, при всей моей не любви в рефлекции, я не вижу ничего плохого в вызове Class.forName(), тем более один раз при старте.
Около года ждал Dagger2. Когда вышел релиз, с радостью начал выпиливать Roboguice и переводить проекты на даггер. Чем дальше шло дело, тем сильнее я чесал затылок. Для лучшей библиотеки по инжекции все настраивается крайне топорно. Писать inject(Xyz) для каждого(!) класса. Из коробки нельзя подменить провайдера (в тестах например), только через костыли. Обращение к сгенерированному коду. Все уже не вспомню.
Поэтому я решил написать свой DI фреймфорк (http://jeta.brooth.org/guide/inject.html) с покером и без рефлекции. И таки написал. Все работает, расширяется и удобно. Теперь чешу затылок, или я чего не понимаю или они.
Если вы про подсветку экрана, в Windows 10 изменения применялись только после перезагругки. В Ubuntu нормально работает и через горячие клавиши и через настройки.
Подсветка клавиатуры автоматически включается и там и там. Уровень к сожалению менять не пробовал. Сейчас уже обновился на 16.04 и тут подсветка клавиатуры автоматически включается на максимум, и не регулируется. Еще, по иронии, сломался спящий режим.
Samsung ATIV-8. Обновился на 10ку,
-не работает регулировка подсветки экрана
-глюк тачпада, не отпускат секунду после drag&drop
-из сна выходит дольше чем стартует
-тихий звук на максимуме
перепробовал все драйвера из Самсунг апдейт, не помогло
Установил убунту 15.10 и все работает. Из сна выходит < 1сек
Говорят, на других шрифтах не компилируется.
Go IDE. Не благодарите.
сорри, промазал окошком) это ответ на вопрос выше
Извиняться перед тестировщиками… Какому мудрецу это вообще могло в голову прийти? Извиняться за то, что нормально? Их профессия, как результат понимания того, что в текущих реалиях без ошибок никак.
Вы же понимаете, что если я до передачи задачи в QA, проверю все возможные тест-кейсы, то после меня эти же кейсы (как минимум) проверят они? Вам не кажется, что это нерационально?
Про стопроцентное покрывание тестами я уже написал, это гиганская работа. По опыту, на написание тестов уходит столько же времения (а то и больше), как на саму фичу.
К тому же, автотесты — не панацея. Как по мне, то они вообще не для этого. Они для того, чтобы программист мог спокойно рефакторить проект. И быстро находить, где и чего он поломал.
Я считаю, мудрый ПМ — это человек, который всегда держит в голове то, что ошибки будут. И выстраивает рабочий процесс, отталкиваясь от этого. Не летает в облаках, не надеется на удачу, не думает, что он сможет заставить программиста писать без ошибок.
Не хочу писать слишком большой комментарий. А так, тут поле не паханное, извините, подобного бреда.
Этот человек хоть один автотест написал? Он знает на сколько это трудоемкая задача?
Вообщем, Вы извините, но статья жуткая «вода». Местами уровня папблика вконтакте.
Если у Вас только тестовый модуль то вы конечно можете замокать. У меня проект где провайдеры могут быть заменены не только в тестах но и в расширениях (вся логика приложения находится в библиотеки (aar), а уже на ее основе создаются приложения(apk))
что если вам нужно проинжектить класс с разными скопами?
Тут все описано. Скоп можно указать как аргумент аннотации
@MetaEntity(ext = RestManager.class, scope=AppScope.class)
, а можно указать дефолтный в настройках.Простите, о каких параметрах речь?
На самом деле рад что Вас все устраивает. Как в анекдоте, «Если все работает — #%& трогать»
Как это делается в Jeta:
И вы меня простите конечно, но о каком удобвстве можно говорить, когда вам предлагают писать
inject(MyThousandthClass c)
для каждого класса где вы используете инжекцию?В остальном в Jeta DI все соблюдено, никакой мета-магии, все классы сгенерированны, читаемы и легко дебажатся. По возможности все ошибки проверяются в compile-time, и все зависимости, провайдеры и скопы определяются там же.
@Inject
используя Java Reflection API, неClass.forName()
. Потом,ClassForNameMetasitory
не основной класс библиотеки, скорее на всякий случай, в документации его нет. Тем не менее, основной класс-metasitory —MapMetasitory
, но он тоже использует cClass.forName()
. Но, если вопрос принципиальный, то можно и это обойти просто создав сгенерированныйMapMetasitoryContainer
как в статье создаетсяDaggerAppComponent
.Хотя, при всей моей не любви в рефлекции, я не вижу ничего плохого в вызове
Class.forName()
, тем более один раз при старте.Поэтому я решил написать свой DI фреймфорк (http://jeta.brooth.org/guide/inject.html) с покером и без рефлекции. И таки написал. Все работает, расширяется и удобно. Теперь чешу затылок, или я чего не понимаю или они.
Подсветка клавиатуры автоматически включается и там и там. Уровень к сожалению менять не пробовал. Сейчас уже обновился на 16.04 и тут подсветка клавиатуры автоматически включается на максимум, и не регулируется. Еще, по иронии, сломался спящий режим.
-не работает регулировка подсветки экрана
-глюк тачпада, не отпускат секунду после drag&drop
-из сна выходит дольше чем стартует
-тихий звук на максимуме
перепробовал все драйвера из Самсунг апдейт, не помогло
Установил убунту 15.10 и все работает. Из сна выходит < 1сек