func_main | Technologies

Telegram-канал func_main - Точка входа

698

Спасибо, что зашли на канал! Субъективно про будущее и настоящее IT сферы от разработчика ПО

Subscribe to a channel

Точка входа

Прочитал статью про революцию искусственного интеллекта: https://medium.com/ai-revolution/ai-revolution-101-8dce1d9cb62d#.27j986njj
Хочу поделиться основными моментами, которые я отметил для себя

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

Выделяют 3 типа искусственного интеллекта:
1) который решает хорошо только одну задачу (ANI: Artificial Narrow Intelligence).
Человечество уже начало эксплуатировать данный вид интеллекта: поисковые алгоритмы, фильтры спама, в автомобилях
2) который похож на человека и может видеть жизнь комплексно, отслеживать причинно-следственную связь и обучаться на полученном опыте (AGI: Artificial General Intelligence)
3) который умнее всего человечества. Характерная черта: очень быстро развивает сам себя (ASI: Artificial Super Intelligence)

Исследователи предполагают, что в 2020х комп будет работать как человеческий мозг. Но существует 2 ключевых проблемы: одна с железом, другая с софтом. Не ясно какая архитектура отработает лучше. Например, железо, можно построить по типу нашего мозга, а можно пойти другим путем, как например, самолетостроение - они не делают самолеты, подобные птицам. Самолеты работают по совсем другим принципам. Скорее всего искусственный интеллект не должен быть реализован на подобии человеческого мозга. Ну а с софтом все еще хуже, на данный момент

Что сможет ASI, чего пока не могут люди:
1) развивать нанотехнологии
2) помочь людям стать бессмертными

По поводу бессметртия привожу лучший отрывок: "It is one of the most remarkable things that in all of the biological sciences there is no clue as to the necessity of death. If you say we want to make perpetual motion, we have discovered enough laws as we studied physics to see that it is either absolutely impossible or else the laws are wrong. But there is nothing in biology yet found that indicates the inevitability of death. This suggests to me that it is not at all inevitable, and that it is only a matter of time before the biologists discover what it is that is causing us the trouble and that that terrible universal disease or temporariness of the human’s body will be cured."

Так же хотело бы полностью согласиться со словами: "Before the prospect of an intelligence explosion, we humans are like small children playing with a bomb. Such is the mismatch between the power of our plaything and the immaturity of our conduct". Ведь действиетльно, предугадать последствия столь мастабного шага вперед очень тяжело. Этот шаг в развитии заденет всех без исключения

В итоге, мораль статьи такова: ИИ - это будет последнее изобретение, которое сделал человек

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

Читать полностью…

Точка входа

На днях общался с другом, который только начинает программировать. Он уже имеет небольшой опыт взаимодействия с Ruby и после просмотра курса Гарвардского курса по программированию cs50 попросил пояснить различия межд другими языками программирования. Без подробностей по поводу ООП, интерпретируемости/компилируемости и тд я не смог сходу пояснить, но вспомнил, что видел хорошее видео на ютубе о выборе языка: https://www.youtube.com/watch?v=T70qJndjYi0
После просмотра станет ясно, какой язык стоит выбрать в качестве первого, а какой нет (Java, C#, Python стоит, остальные не очень)

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

Читать полностью…

Точка входа

Почитал про вторую версию Ionic - писать под мобильные устройства станет еще проще и приятней, по сравнению с первой версией (особенно, если учесть появление Redux): http://ionic.io/2
Мое знакомство с этим фреймворком произошло несколько лет назад, когда они только запустились. Мы искали инструмент для быстрого прототипирования мобильных приложений. Результаты были более, чем удовлетворительные: опытный фронтендщик буквально за день мог накидать рабочий прототип приложения с несколькими ключевыми экранами (логин, различные списки, редактирование объектов и тд). Из того, что я успел прочесть по новому Ionic, в новой версии будет поддержка второго AngularJS, много новый компонентов и других полезных полуфабрикатов

Из множества минусов Ionic могу выделить только один существенный: приложения, написанные с помощью него, не очень быстро работают. Например, один из проблемных моментов - это большие списки с бесконечнм скроллом. Нативный список в iOS (и не только) реализован таким образом, что приложение держит в памяти только те ячейки, которые ппоказываются на экране. А в Ionic в памяти (в DOM'е) лежат все элементы списка. Так получается из-за разных подходов рендеринга (веб и не веб). Возможно что-то изменится в будущем, но пока проблема сохраняется

Гибридные приложения точно не победят нативные, но по крайней мере они продолжат помогать разработчикам и предпринимателям быстрее презентовать свои мысли и выводить на рынок первую жизнеспособную версию продукта (судя по сайту Ionic, этот фреймворк был использован более чем в 1 млн. приложений)

Любителям поковырять внутренности, советую разобрать Cordova - именно эта библиотека является мостом между WebView и нативной частью приложения. Не знаю как сейчас, но 2 года назад Android сильно отставал в развитии от iOS в плане передачи данных из нативной части в JS

P.S. Redux, на мой взгляд, один из основных модулей, который фронтендщику нашего времени следует изучить. Автор модуля не бросил разработчиков в одиночестве и сделал нормальные видеоуроки, где на пальцах объясняет, как правильно работать с Redux: https://egghead.io/courses/getting-started-with-redux

Читать полностью…

Точка входа

Так и думал, что скоро это произойдет. Вышла статья по которой можно понять, чему можно научиться, играясь в песочнице TensorFlow: https://cloud.google.com/blog/big-data/2016/07/understanding-neural-networks-with-tensorflow-playground

Под конец идет хардкор про аппроксимацию двойной спирали (http://goo.gl/PBE6SB )

Впервые открыл для себя сервис по предоставлению мощностей для машинного обучения: https://cloud.google.com/ml/
Там есть калькулятор стоимости - ценник конечно же конский) Но с большим датасетом скорее всего выгодней арендовать мощности, чем насиловать себя с администрированием

Читать полностью…

Точка входа

Вчера на канале @myunpublished прочитал отзыв о книге Уолтера Айзексона "Инноваторы".
Приведу часть отзыва, после которой я не раздумывая купил книгу: "... Как несколько гениев, хакеров и гиков совершили цифровую революцию» и уже по первой главе понимаю, что это очень крутой исторический и биографический трактат о машинной, цифровой, компьютерной эпохе. Айзексону здорово удаются биографические очерки (вспомним книгу про Стива Джобса), но, оказывается, он ещё неплохо справляется и с подробным описанием математических вычислений и процессов создания механизмов — предвестников компьютеров в то время. ..."

Спасибо автору @myunpublished за отзыв о книге, а то так бы и не заметил выход еще одного мастрида. Приятно вспоминать, как изменился ход моих мыслей после прочтения книги о Стиве Джобсе, думаю "Инноваторы" будет не менее мотивирующая

Хочу поделиться еще двумя источником хорошего чтива
1) Здесь публикуются отличные сводки новостей из научного мира (без мнений маркетологов): @funscience Частенько проскакивают годные статьи с фантазиями о будущем и достижениями в настоящем. Не знаю как автор успевает накидывать так много интересных статей, спасибо ему за труд!

2) Дружественный канал о продуктивности, лайфхаках, стартапах, технологиях и автоматизации: @themarfa
Пример цепляющей статьи, которую написал автор канала:
http://blog.themarfa.name/vosiem-sovietov-dlia-google-chrome-kotoryie-rieshat-vsie-probliemy/#axzz4FaqnM23o

Читать полностью…

Точка входа

Мастер-класс по работе с TensorFlow, не требующий наличия степени PhD: https://goo.gl/vj1Tzm
Автор показывает, как обучить сеть для распознавания рукописных чисел. При обучении и тестировании используется стандартный датасет MNIST: http://goo.gl/C70oVt

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

Читать полностью…

Точка входа

Результат одной из итераций свертки изображения (матрица слева) с ядром 3х3 (по центру)

Читать полностью…

Точка входа

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

Достаточно часто проекты живут на линуксовых серверах, поэтому хочу порекомендовать крутейшие видео уроки от админа Linux серверов, выражающегося человеческим языком: https://goo.gl/7PcXmO
Рассказывает, приводя примеры на Ubuntu, но будте уверены, в других Linux все примерно так же работает

У него несколько плейлистов. По опыту могу сказать, что стоит посмотреть хотя бы базовый (для LPIC-1 (exam 101)). У Кирилла (автора) соотношение информации, применяющейся в работе и просмотренной, стремится к единице

Отдельно хочу выделить несколько уроков:
- по upstart: goo.gl/FleKrQ
- по работе с пакетами: goo.gl/q5Cgk8
- по работе с процессами: goo.gl/XJkMiZ

P.S. LPIC - это сертификация по знанию Linux

Читать полностью…

Точка входа

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

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

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

Медуза выкатила отличное интервью с Рональдом по этике биотехнологий: https://meduza.io/feature/2016/07/18/izlishnyaya-predostorozhnost-odin-iz-samyh-pagubnyh-printsipov

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

Читать полностью…

Точка входа

Сегодня составлял вакансию на frontend разработчика. Решил не просто копипастить и править предыдущую вакансию, а написать новую, с нуля, и заодно актуализировать вопросы для соискателей. Пока писал, гуглил, что спрашивают/требуют другие компании и нашел хорошую статью, которая, в целом, отражает текущее положение дел на фронте: https://medium.com/creative-business/why-is-it-so-hard-to-find-a-front-end-developer-cb92848a7c6f#.u7v6n3lxk

По моему мнению, самая важная фраза из статьи: a good front end developer needs to be a good back end developer as well. Как мне кажется, именно поэтому хороших фронтов так непросто найти

Для тех, кто хочет стать разработчиком переднего конца, есть несколько неплохих и до сих пор актуальных списков с вопросами для проверки своего уровня:
1) https://github.com/h5bp/Front-end-Developer-Interview-Questions/tree/master/Translations/Russian
2) https://github.com/adam-s/js-interview-review
3) https://github.com/khan4019/front-end-Interview-Questions

Читать полностью…

Точка входа

Слайд с тем, что нужно помнить во время написания кода

Читать полностью…

Точка входа

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

Успех игры от нинтендо дает свежий глоток воздуха другим стартапам, работающим в этой теме. Ведь на самом то деле, про дополненную реальность говорят давно, я даже помню, как в университете на первом курсе сидел и слушал представителя компании AR Door о том, какие крутые проекты они делают. Но не все вопросинимали дополненную реальность всерьез. А игрушка с покемонами смогла продвинуть идею в массы

По этой теме есть хорошая статья про то, что "Pokémon Go" - это еще один шажок к виртуальной реальности: http://www.vox.com/2016/7/12/12152776/pokemon-go-augmented-reality-beginning

#AugmentedReality

Читать полностью…

Точка входа

Работа с графикой, всегда выглядит впечатляюще. Вдвойне круто, когда это работает в браузерах. Что интересно, я ни разу не встречал в резюме, чтобы люди, рабоающие с JavaScript, указывали хоть какой-то опыт работы с WebGL. Даже про обычную работу с Canvas не особо часто говорят. Хотя, на мой взгляд всем JS разработчикам стоит попробовать поиграться с холстом, сделать, например, какую-то простенькую псевдо 3D игрушку

Для работы с WebGL рекомендуют обычно эту библиотеку: http://threejs.org
По крайней мере, интерактивную рекламу для больших компаний делают с помощью нее

Здесь можно посмотреть пример реализации модели человеческого глаза: http://www.vill.ee/eye/
(на мобильниках тоже открывается, но не получится удобно повертеть глаз)

Читать полностью…

Точка входа

Интересные слайды из презентации Мэри Микер "internet trends 2016" с кратким описанием поколений

Интересно, в будущем будут описывать поколонеие после миллениалов?

Тренд с отсутствием браков подтверждается. Одна из традиционных ценностей может уйти через несколько десятков лет

Читать полностью…

Точка входа

Посетил вчера Go meetup, который проходил в офисе Mail Group. Было 4 доклада, в основном по внутренностям Go. Видеозапись можно посмотреть здесь: https://www.youtube.com/watch?v=8JnOiz7r-g0&feature=youtu.be

По стилю изложения и качеству материала явно выделялся первый докладчик. Все-таки работа в компании с мировым именем (Dropbox) дает о себе знать. Он говорил об собенностях реализации компилятора и runtime, устройстве базовых типов, хранении структур в памяти, создании горутин, изменении размера стека и прочих низкоуровневые подробности. Вот его стоит посмотреть (ссылка на видео с началом его выступления: https://youtu.be/8JnOiz7r-g0?t=1h47m24s)

Остальные хантили людей и размазывали, что у них там есть на часовое выступление - годного материала от них не услышать. Рассказчик про базы данных, по-моему, плохо понимает различия между индексируемой БД и просто KV. По рассказам друга, который его собеседовал, так и есть

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

P.S. судить об уровне подготовлнности докладчиков можно по бенчмаркам с текстом "нет лишних аллокаций" - какие из аллокаций автор считает лишними не понятно

Читать полностью…

Точка входа

Я никак не пересекаюсь с программированием игр, рендерингом и тд. Но иногда интересно посмотреть, что происходит в "другом" мире. Несколько месяцев назад один крутой программист скинул посмотреть вот такое вот видео: https://www.youtube.com/watch?v=P_I8an8jXuM&feature=youtu.be
С помощью технологии Vulkan Prototype рендеринг ускоряется в разы. Даже захотелось посмотреть на какую-нибудь современную игрушку, которая использовала бы для рендеринга Vulkan

Только cейчас появилось время, чтобы понять, что это вообще такое. Статьи на хабре хватило, чтобы понять, что хеллоу ворлд сходу не реализовать
https://habrahabr.ru/post/283490/

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

Читать полностью…

Точка входа

Хочу поделиться тремя мыслями:

1) Всю неделю пишу фронт на AngularJS 2, могу точно сказать, что фреймворк идеально подходит для написания больших SPA

Огромное спасибо подписчикам за обратную связь по Aurelia и реакту! Мне всегда интересно читать о ваших результатах и вашем опыте!

Эта книга помогает мне провигаться в изучении фреймворка семимилными шагами: https://www.ng-book.com/2/ Она платная, но покупка того стоит - в ней разжевываются ключевые моменты при написании сложных приложений

2) После калькулятора зарплаты от stackoverflow (https://stackoverflow.com/company/salary/calculator) начал понимать, почему к нам на собеседования приходит все меньше и меньше профессионалов (но мы рады видеть и перспективных интернов)

3) Коллега посоветовал посмотреть курс (бесплатный) по основам Computer Science "cs50":
http://javarush.ru/cs50.html

Лучшие уроки, которые я когда-либо видел. На хабре есть рекламный пост к видеокурсу: https://habrahabr.ru/company/javarush/blog/303806/
Если вы только начинаете погружаться в мир программирования, то это must see

Читать полностью…

Точка входа

Уолтер Айзексон - Инноваторы

Читать полностью…

Точка входа

Нахожусь под впечатлением от видео, где бывший разработчик Angular 2 разносит Angular 2 и продвигает свою поделку (Aurelia)
https://www.youtube.com/watch?v=6I_GwgoGm1w&feature=youtu.be
Взгляните - там хорошо показана расстановка сил в мире фронта на ближайший год. Видео стоит смотреть сразу с 35ой минуты

Кстати, за пару дней использования Angular 2 стало понятно, как реализовать практически все: валидации, хранение текущей сессии, вложенность компонентов и тд. Смог задеплоить приложение за минуту с помощью отличного инстурмента https://github.com/angular/angular-cli (кстати, инструмент копировался с емберовского cli). В общем, все что нужно для построения админки (а я в основном только такие приложения и пишу) идет практически из коробки, в отличии от ReactJS

Лично у меня сформировалось мнение, что реальным конкурентом второму ангуляру может быть только Aurelia

Демо видео Aurelia:
https://player.vimeo.com/video/117778145

Читать полностью…

Точка входа

Выходные прошли за изучением экосистемы React. Но по традиции меня занесло и я снова решил посмотреть туториалы по AngularJS 2. После них, мне кажется, что у реакта не экосистема, а обычная помойка

Год назад, после этого видео: https://www.youtube.com/watch?v=XQM0K6YG18s
стало ясно, кто отец в плане рендеринга. Но беда была в том, что этот отец еще не родился, да и сейчас сидит в бете

Поковырявшись немного с реактом, я уже успел сформировать кое-какое мнение о нем. Кстати, о реакте я говорю больше не как о библиотеке, а как о волне, которая включает в себя паттерн Flux, идею с компонентами, GraphQL и тд. Ощущение от реакта пока такое: еще один php-подобный мир. Конечно, он дал определенный импульс всему фронтенд сообществу, но, как мне кажется, вскоре должен прийти Ruby on Rails в мире фронта. И второй ангуляр очень уж смахивает на него

Годная статья по теме: https://habrahabr.ru/post/274523/
Angular 2 против React: И будет кровь... поскорее бы уже

Читать полностью…

Точка входа

Никто никогда не задумывался, почему сверточные сети называются сверточными? И почему изображения чаще всего прогоняют именно через них? Ответ прост: операция свертки - это одна их базовых операций по обработке изображений. А в сетях, в которых на каком-то из слоев применяется операция свертки к входным параметрам, называются сверточными. Более подробно про операцию свертки можно почитать здесь: https://docs.gimp.org/ru/plug-in-convmatrix.html

Советую на досуге запрограммировать свертку для изображения, без использования дополнительных библиотек (OpenCV и подобных). С задачей сможет справится любой, кто уже умеет работать с массивами. После этого сразу станет понятно, как работают некоторые фильтры в Instagram или Photoshop. Например, с помощью свертки изображения с определенной матрицей, можно получить сглаженное изображение, которое чаще называют "замыленным" или "заблюренным" изображением (gaussian blur)

К чему это я все: вышла годная статья, где по шагам разжевывается, как нейронные сети обрабатывают изображения:
https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/
На мой взгляд пока самое доходчивое описание работы сверточных сетей, которое я видел

Читать полностью…

Точка входа

Конечно же, Google тоже участвует в гонке

Читать полностью…

Точка входа

Многие заметили, что я кидаю материалы на английском языке. Так вышло, что хороших статей с переводом достаточно мало, поэтому приходится читать/смотреть на английском. Сейчас у меня это получается уже гораздо проще, чем раньше. В этом посте, хочу рассказать о своем "пути" изучения английского и помочь тем, кто ищет свой "путь"

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

Я сразу понял, что изучить язык "без смс и регистрации" не получится, поэтому поставил себе цель: через год смотреть фильмы / слушать радио на английском и понимать 80-90% происходящего

Цели я достиг и вспомная, что помогло лучше всего, хочу отметить 3 момента:

1) Необходимо иметь быстрый способ перевести то, что не понимаешь. Иначе в голове начинается кашка и теряется смысл читаемого.

Для этого я использую расширение Google Translate в хроме: https://chrome.google.com/webstore/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb
Выделяешь слово, и оно моментально переводится. К сожалению адекватных альтернатив для мобильника не встречал. Если кто видел, отпишите плиз (@dkostenko)

2) Общение с носителем языка. В наше время это сделать достаточно просто - по скайпу. Для этого достаточно загуглить "уроки ангглийского по Skype" и выбрать, с кем хочется пообщаться. Мне повезло, я практически сразу нашел отличного преподавателя (из Лондона), с которым мы не просто шагали по стандартным урокам - мы обсуждали жизненные моменты, детали, которые были интересны мне, а не авторам зауныльных пособий

Хочу поделиться контактом этого преподалавателя. Его зовут Оливер, в скайпе его можно найти как "Ollie.vdh". Я очень благодарен ему, за то, как он поднял мой уровень - его подход к преподаванию действительно необычен, рекомендую пройти тестовый урок

3) Читать/смотреть на английском по интересным для себя темам, а не по "охране окружающей среды" или "столицы мира" (конечно, я понимаю, что это хороший и инетресные темы, но так получилось, на английском мне интересней изучать что-то по IT)

Я достаточно часто сижу на https://medium.com
Там много интереснейших статей по любым темам на простом английском. Так же не обошлось и без фанатичного прослушивания BBC News (http://www.bbc.co.uk/radio/player/bbc_world_service) или просмотра симпсонов в оригинале

Читать полностью…

Точка входа

Не думал, что напишет столько людей. Спасибо, что читаете посты!

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

1) @brain_party

На нем публикуются анонсы незаметных, но интересных мероприятий. Например на прошлой неделе я послушал про машинное обучение при обоработке текстов (вывод, кстати, один - нейронные сети побеждают существующие алгоритмы)

Подписывайтеся, возможно, пересечемся на какой-то из встреч

2) @NeuroScienceRu

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

Проматайте ленту на месяц назад - по пути будет встречаться только актуальная инфа, есть что почитать

Читать полностью…

Точка входа

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

1. Пишите тестируемый код

На видео автор уделяет отдельное внимание теме автоматичесого тестирования. И понятно почему: как разработчик, могу сказать, что примерно половина рабочего времени уходит на ручное тестирование программ. Это не так плохо, если после завершения проекта к коду никто и никогда не будет прикосаться. Но чаще всего, проект развивается, и со временем в него вносятся изменения. Тут то и начинаются проблемы: сделали небольшое изменение, протестировали руками измененный код и выкатили, не заметив проблем, которые проявляют себя только в динамике

Особенно эта боль остро чувствуется в языках с динамической типизацией. Например: функция всегда ожидала на вход число, а тут она начнет получать (null / nil) и начинает падать. Разработчик в принципе не мог помнить, что от чего зависит в проекте, соответственно ругать его - не самое лечшее решение, чтобы избежать подобных проблем. В таких ситуациях лучше всего писать приложение (автоматические тесты), которое тестирует ваше приложение. Такой подход поможет выиграть время, которое вы бы могли потратить на ручной прогон приложения

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

1) избегать глобальные состояния (global state);

2) делать "инъекции" зависимостей (dependency injection) в тестируемые функции

Эти советы можно хорошо прочувтсвовать при работе с фреймворком AngularJS - там практически везде необходимо использовать инъекции зависимостей и уходить от глобального состояния. Рекомендую потратить несколько дней на опробывание данной технологии - лично для меня этот опыт был бесценен

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

По теме тестирования хочу посоветовать отличную книгу "Как тестируют в Google". После прочтения, становится понятно, как массивная компания все еще имеет возможность так быстро двигаться. Секрет в особом подходе к тестированию (неожиданно, да?)

P.S. Я начинаю прорабатывать видео курс (бесплатный) по программированию на Go, и если вам интересно понаблюдать за разработкой реального приложения со многими проблемами и их решениями, стоящих на пути разработчика (в том числе и автоматические тесты), то напишите "+" мне в личку @dkostenko

Читать полностью…

Точка входа

http://www.vill.ee/eye/

Читать полностью…

Точка входа

На днях открыл для себя MIT OpenCourseWare. Был удивлен, что один из самых сильных технических ВУЗов мира вот так свободно открывает все свои лекции и конспекты. К слову, обучение в данном вузе стоит от 3 млн рублей в год

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

Здесь можно посмотреть список всех курсов (там присутствуют не только технические специальности): http://ocw.mit.edu/courses/audio-video-courses/

Круто то, что публикуются курсы различной давности. Интересно смотреть на манеру преподавания различных периодов. Судя по википедии, лекторы обновляют свои материалы на сайте, так что присутствуют достаточно свежие (2014-2015г.) лекции. Из плохого: еще нет приложения для мобильников, как у Coursera - не всегда удобно смотреть/слушать с компа

Читать полностью…
Subscribe to a channel