Pull to refresh
19
0
Send message

Паттерны в AngularJS

Reading time27 min
Views61K

Краткий обзор


Один из лучших способов изучить, что то новое, это увидеть, как в нем используются уже знакомые нам вещи. Эта статья не намерена ознакомить читателей с проектированием или шаблонами проектирования. Она предлагает базовое понимание концепций ООП, шаблонов проектирования и архитектурных шаблонов. Цель статьи описать, как различные конструкции программного обеспечения и архитектурные шаблоны используются в AngularJS и написанных на нем SPA.

Введение


Статья начинается с краткого обзора фреймворка AngularJS. Обзор объясняет основные компоненты AngularJS: directives, filters, controllers, services, scope. Во втором разделе перечислены и описаны различные конструкции и архитектурные шаблоны, которые реализованы внутри фреймворка. Шаблоны сгруппированы по компонентам AngularJS, в которых они используются. Если некоторые шаблоны используются в нескольких компонентах, это будет указано.
Последний раздел включает несколько архитектурных шаблонов, которые обычно используются в SPA построенных на AngularJS.
Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments11

Играй на победу: как побеждать в играх и что нужно знать о профессиональных игроках в GameDev [часть 1]

Reading time6 min
Views127K


Давным-давно мы с друзьями играли в Starcraft по диалапному модему. Я часто проигрывал, пока не прочитал на одной из BBS фразу, которая всё поменяла. Принцип очень простой: в стратегиях реального времени выигрывает тот, кто постоянно атакует. Нужно было научиться мыслить категориями постоянного создания угроз.

К чему я это. Есть такой мужик — Дэвид Сирлин. Киберспортсмен, чемпион по Street Fighter, гейм-дизайнер, настольщик, киберспортивный тренер. У него есть целая теория на тему того, как тренироваться и играть так, чтобы выигрывать. Универсальная, применима ко всем играм. Ниже — основные тезисы первой части и мои комментарии. Прочитать про основные вещи из книги будет интересно и с точки зрения GameDev (в особенности — балансировки), и просто по жизни.
Читать дальше →
Total votes 76: ↑72 and ↓4+68
Comments57

Обучение тестировщиков. Практический опыт и советы

Reading time7 min
Views40K
Что подталкивает нас к организации обучения? В первую очередь — потребность в качественном улучшении работы и повышении квалификации сотрудников. Как правило, и сами сотрудники заинтересованы в том, чтобы развиваться. Нередко, правда, выясняется, что человек не знает, куда. Он просто хочет расти, но не понимает, какой ему нужен рост — «горизонтальный» или «вертикальный».

На выходе бизнес, в первую очередь, хочет получить квалифицированных сотрудников — «спецназовцев» от мира тестирования. С какими проблемами мы сталкиваемся?

Проблемы при организации обучения


1. В компании могут отсутствовать тренеры как таковые

Что же делать, если нет тренеров? На самом деле, это не проблема. Информацией можете делиться лично вы. Еще один вариант — сделать тренерами коллег. Например, если вам необходимо организовать обучение программированию, попробуйте подойти к одному из разработчиков и сказать: «О, Великий Сверхчеловек, озари меня своим знанием, научи меня программировать!». Возможно, это сработает. Также может сработать кейс с регулярными поставками пива. Одним словом, решение всегда есть.
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments17

Команда стартапа: сотрудников надо подбирать как жену

Reading time5 min
Views19K
Как я подбирал и мотивировал команду для стартапа: советы, проверенные практикой



За четыре с половиной года в CDNvideo успели поработать менеджеры из больших корпораций и специалисты из небольших компаний, одаренные студенты и бывшие дауншифтеры с большим стажем. Большую часть из них я или мои коллеги знали лично — например, с одним из сотрудников мы работали вместе еще 10 лет назад, и все это время поддерживал с ним связь, чтобы, наконец, в прошлом году принять его к нам в штат. Так что команду мы собирали тщательно, по крупицам — каждый новый сотрудник важен, и с каждым связана своя история.

Надеюсь, вам помогут наблюдения и советы, основанные на опыте нашей компании. Но главный, наверное, такой: не бери на работу людей, если есть хоть небольшое сомнение в правильности выбора — даже если кажется, что на 99% они состоят из достоинств. Сотрудников надо подбирать как жену, даже более тщательно — при выборе сотрудника надо учитывать не только твое личное к нему отношение, но и то, как он впишется в коллектив.
Читать дальше →
Total votes 40: ↑25 and ↓15+10
Comments32

10 ошибок, мешающих нам измениться

Reading time5 min
Views126K
Примечание переводчика: Некоторое время назад я прочитал замечательную статью на Medium.com. Автор статьи Samuel Thomas Davies взял за основу исследования профессора Стэнфордского университета Би Джей Фогга об изменении поведения. Сегодня я хочу поделиться ее переводом с хабрасообществом.

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

Очевидно, что делать это намного сложнее, когда вы совершаете ошибки, которые достаточно банальны, но при этом часто недооценены или просто-напросто проигнорированы ввиду их неприметности.

Проблема в том, что у нас есть естественная склонность брать на себя вину за то, что новые привычки не приживаются. Мы полагаем, что реальная проблема в нас, тогда как в действительности, она кроется в стратегии, которую мы использовали.
Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments15

Подробно о Xamarin

Reading time12 min
Views441K
Вы неплохо владеете языком C# и платформой .NET в целом? Вам надоело стоять в стороне и смотреть, как кто-то другой пишет крутые мобильные приложения вместо вас? У меня есть для вас кое-что интересное! То, что поможет вам изменить сложившуюся ситуацию и позволит писать отличные мобильные приложения, не требуя отдельного изучения Objective-C и Java. Я расскажу вам о продукте Xamarin. Подробно и правдиво.

Что это?



Xamarin — это фреймворк для кроссплатформенной разработки мобильных приложений (iOS, Android, Windows Phone) с использованием языка C#. Идея очень простая. Вы пишете код на своем любимом языке, с применением всех привычных для вас языковых фич типо LINQ, лямбда-выражений, Generic`ов и async`ов. При этом вы имеете полный доступ ко всем возможностям SDK платформы и родному механизму создания UI, получая на выходе приложение, которое, строго говоря, ничем не отличается от нативных и (по крайней мере по заверениям) не уступает им в производительности.

Фреймворк состоит из нескольких основных частей:
Читать дальше
Total votes 83: ↑73 and ↓10+63
Comments63

Учимся C#. Ведро второе.

Reading time6 min
Views28K

Результаты отзывов


Немного о C# и *nix


Многих заинтересовало, как же можно писать на C# в *nix системах. Попробую помочь нашим друзьям. Существует проект Mono и вот, что нам говорит Википедиа:
Mono — проект по созданию полноценного воплощения системы .NET на базе свободного программного обеспечения.
Mono включает компилятор языка C# — mcs, среду исполнения .NET — mono (с поддержкой JIT) и mint (без поддержки JIT), отладчик, а также ряд библиотек, включая реализацию ADO.NET и ASP.NET. В рамках проекта также разрабатываются привязки для графической системы GTK+ на платформу .NET.
Среда исполнения mono может исполнять модули, написанные на языках C#, Visual Basic .NET, Java, Boo, Nemerle, Python, JavaScript, PHP и Object Pascal (при наличии компилятора в среду .Net/Mono). Ожидается также поддержка языков C, Ada 2005 и Eiffel.
Реализации Mono существуют для следующих операционных систем: GNU/Linux, Solaris, Mac OS X, Microsoft Windows и Unix.

И это говорит нам о том, что мы спокойно можем программировать практически в любой ОС на C#. Последний релиз Mono Project — 2.2. Mono Project — здесь вы сможете загрузить самую последнюю версию, а так же посмотреть документацию.
Так же есть ещё одна хорошая новость. У группы разработчиков Mono есть дочерний проект — MonoDevelop. Это бесплатная IDE для C# и ASP.NET. Она поддерживает все необходимые функции для успешной и быстрой разработки в *nix системах.

Что там дальше...
Total votes 99: ↑71 and ↓28+43
Comments58

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

Reading time6 min
Views1.9K
Перевод статьи из блога Джефа Этвуда, одного из основателей Stack Exchange Network, сети вебсайтов, посвященных работе с вопросами и ответами в различных областях. Среди прочих вебсайтов этой сети стоит выделить Stack Overflow — самый первый вебсайт, созданный в рамках Stack Exchange Network и посвященный вопросам и ответам в области программирования. Отдельная благодарность karaboz за помощь и вдохновение.


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


imageКогда люди спрашивают меня о самой большой ошибке, которую я совершил в процессе создания Stack Overflow (Прим. переводчика — далее SO) я рад, что не надо выдумывать и говорить банальности. Я могу честно и открыто рассказать об огромной, нелепой и, до смешного, дурацкой ошибке, которую совершил в самом начале разработки SO. Что ещё хуже, я могу рассказать о такой ошибке, которую продолжал совершать потом ещё и на протяжении девяти месяцев на фоне продолжающихся протестов сообщества.

Читать дальше →
Total votes 85: ↑82 and ↓3+79
Comments17

KPI, или пособие по командному самоубийству

Reading time11 min
Views447K
Для написания этой заметки  было затрачено:

  • 68338 километров на поездки.
  • 72 человеко-часа на почтовую переписку.
  • 423 человеко-часа на эксперименты с коллективом в 30 человек.
  • 88 часов на подготовку докладов и выступления на конференциях.
  • 17 чашек кофе на беседу с мудрыми людьми на афтепати.
  • Порядка 25 часов на набор этого текста и правку багов в нем :).
  • До смерти замученный копирайтер, который был вынужден разбирать мои черновики, аудиозаписи и вообще ему спасибо.


Много денег и времени. Пожалуй, самым затратным (по нервам, времени и деньгам) был эксперимент над собственной командой, о котором мне безумно неловко вспоминать. Но об этом — ниже.

Рано или поздно, наверное, у каждого директора возникает желание платить по справедливости. За выполенную работу. И очень многие сейчас пытаются внедрять KPI (ключевые показатели эффективности). Работает так: вы, как владелец бизнеса, назначаете конкретные цели для сотрудников. Они достигают или не достигают поставленных целей в процессе работы. Тем, кто достиг — выдается плюшка (денежная премия).

Смысл такого подхода: платить по справедливости. На сколько наработал — столько и получил. Это честно, это логично, это — прекрасно!



Ну, логично же, что:

  • Продажникам  нужно назначать процент с оборота. Волки должны быть голодными. (Да, есть альтернативное мнение, что применить такой подход — значит «обложить себя дополнительным налогом». Но как по мне — тут все справедливо :-)).
  • Офисному планктону — ставить оклад. Стабильность для них — ооочень важное условие существования.


А вот с творческими единицами (дизайнерами, программистами) — все значительно сложнее.

Мы недавно провели опрос руководителей ведущих диджитал-агентств и веб-студий страны на тему «а как вы используете KPI по отношению к труду творческих единиц», в результате получили вот такую картинку:



Некоторые компании (15%) применяют KPI для оценки эффективности труда программистов и дизайнеров.
Читать дальше →
Total votes 130: ↑114 and ↓16+98
Comments122

Автоматизация тестирования iOS-приложений с применением Calabash и Cucumber

Reading time13 min
Views33K


В процессе разработки любого приложения наступает момент, когда в связи с ростом функциональности трудозатраты на регрессионное тестирование становятся непомерно велики. Другая причина значительной трудоемкости тестирования iOS-приложений (так же как и любых других мобильных приложений) — разнообразие линейки поддерживаемых устройств и версий ОС, необходимость тестирования в альбомном и портретном режимах, а также при различных условиях соединения с интернетом. Стремление оптимизировать процесс тестирования приводит нас к необходимости его полной или частичной автоматизации.

В этой статье я расскажу о том, как мы автоматизируем тестирование наших приложений (ICQ и Агент Mail.Ru), поделюсь нашими наработками в этой области и упомяну о проблемах, с которыми мы сталкиваемся.
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments10

GitHub опять разблокировали

Reading time1 min
Views39K
По сообщению заместителя руководителя Роскомнадзора Максима Юрьевича Ксензова сайт github.com исключен из реестра запрещённых сайтов РФ.



Читать дальше →
Total votes 57: ↑49 and ↓8+41
Comments115

Сергей Архипенков: «Интеллектуальными людьми невозможно управлять»

Reading time4 min
Views26K
Сегодня информационные технологии невозможно представить без грамотного управления. Программирование перестает быть «уделом избранных», привлекая все больше и больше людей к работе в этой области. Поэтому все важнее становится профессия менеджера IT-проектов, способного собрать команду первоклассных специалистов и в заданные сроки решить поставленную задачу.

Что представляет собой проектный менеджмент в IT, какова личность современного руководителя проекта и что необходимо сделать, чтобы стать профессионалом в этой области? Об этом расскажет Сергей Архипенков craft_brother, директор департамента комплексных архитектурных решений ЗАО «Эр-Стайл», автор 5 книг, более 100 статей, докладов и курсов, председатель программного комитета конференции по вопросам управления IT-проектами SPM Conf – 4.



Читать дальше →
Total votes 32: ↑23 and ↓9+14
Comments5

Десять типичных вопросов на собеседованиях на знание HTML

Reading time7 min
Views100K
Аурэлио Де Роза несколько дней назад выпустил, на мой взгляд, очень привлекательную статью, которой я хочу с вами поделиться на тот случай, если у вас плохо с английским.
Читать дальше →
Total votes 37: ↑16 and ↓21-5
Comments42

Человеческий фактор в разработке программного обеспечения: психологические и математические аспекты

Reading time8 min
Views27K
Разработка программного продукта — это процесс, в котором человеческий фактор играет очень важную роль. В статье поговорим о различных психологических и математических законах и принципах. Некоторые из этих принципов и законов вам хорошо известны, некоторые — не очень, а некоторые помогут объяснить ваше поведение или поведение ваших сотрудников и коллег.

Разработка ПО – нелинейный процесс

Разработка программного обеспечения — нелинейный процесс. Если на проект выделено 5 разработчиков, которые за 5 месяцев должны разработать продукт (25 чел./мес.), то 25 разработчиков не смогут сделать эту же работу за 1 месяц (те же 25 чел./мес.).


image
Читать дальше →
Total votes 51: ↑39 and ↓12+27
Comments14

Краткая история хакерства. Рассказ от руководителя информационной безопасности Яндекса

Reading time6 min
Views108K
Привет! Меня зовут Антон Карпов, в Яндексе я руковожу службой информационной безопасности. Недавно передо мной встала задача рассказать школьникам — студентам Малого ШАДа Яндекса — о профессии специалиста по безопасности. Я решил, что вместо скучной теории, которую и так можно прочитать в учебниках (да и что расскажешь за одну лекцию!), лучше рассказать историю компьютерной безопасности. На основе лекции я подготовил этот короткий рассказ.



Как ни крути, а информационная безопасность у многих прочно ассоциируется с хакерами. Поэтому и рассказать я хочу сегодня про хакеров и их историю. В наши дни под хакером понимается злоумышленник, который делает что-то нелегальное, взламывает какие-то системы с материальной выгодой для себя. Но это далеко не всегда было так.
Конспект лекции
Total votes 79: ↑69 and ↓10+59
Comments29

Интервью с Руди Хайном: девелопер бестселлеров делится секретами успеха своих приложений

Reading time6 min
Views17K
Французского разработчика Руди Хайна (Rudy Huyn), пожалуй, можно назвать самым известным и популярным независимым создателем приложений для платформы Windows Phone. На данный момент его портфолио насчитывает порядка 18 приложений, среди которых особенно выделяются такие неофициальные клиенты, как 6tag, 6snap для Snapchat, CloudSix для Dropbox и другие.



Общее количество загрузок всех его приложений превышает 15 миллионов, что, согласитесь, неплохой результат для инди-разработчика. Нашим коллегам удалось на днях поговорить с Руди, и мы решили сегодня поделиться с вами этим интервью.
Читать дальше →
Total votes 35: ↑27 and ↓8+19
Comments12

Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Part 2. Немного о настройках

Reading time4 min
Views4.4K
И снова всем привет!

По итогам опроса, который я оставил в свой предыдущей статье «Самопальный фрэймворк Arachnidium для тестирования web и мобильных приложений. Get started!» большинство проголосовало «ЗА». Что же, show must go on!

В данной маленькой публикации я расскажу о наработке, позволяющей подготовить настройки для кросс-браузерного тестирования вэб-приложений/кросс-платформенного и просто запуска мобильных приложений для выполнения теста — в рамках описываемого фрэймворка. Сразу скажу, что фича может быть воспринята неоднозначно в силу определенных причин. Часть из них вполне объективные и их я назову в самом конце статьи.

Данный пост как-бы визуализирует главу Configuration моей собственной документации (пока это вики странички на github), которую в ближайшее время предстоит актуализировать. Здесь будет представлен простой пример подготовки настройки, а так же пример того, как я предполагаю использовать свой формат в контексте автоматизации тестов при помощи Selenium и Appium. Статья содержит интересное и наглядное, как мне думается, видео.

План:
— Что за проблему я попробовал решить?
— Простая демонстрация
— Демонстрация на примере кросс-браузерного теста
— Чего не хватает
— Анонс

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments5

Чистый код с Google Guava

Reading time9 min
Views111K
Наверное, любому программисту доводилось видеть код, пестрящий большим количеством повторов и реализации «низкоуровневых» действий прямо посреди бизнес-логики. Например, посреди метода, печатающего отчёт, может оказаться такой фрагмент кода, конкатерирующий строки:

StringBuilder sb = new StringBuilder();
for (Iterator<String> i = debtors.iterator(); i.hasNext();) {
  if (sb.length() != 0) {
    sb.append(", ");
  }
  sb.append(i.next());
}
out.println("Debtors: " + sb.toString());

Понятно, что этот код мог бы быть более прямолинейным, например, в Java 8 можно написать так:

out.println("Debtors: " + String.join(", ", debtors));

Вот так сразу гораздо понятнее, что происходит. Google Guava – это набор open-source библиотек для Java, помогающий избавиться от подобных часто встречающихся шаблонов кода. Поскольку Guava появилась задолго до Java 8, в Guava тоже есть способ конкатенации строк: Joiner.on(", ").join(debtors).
Рассмотрим часто встречаемые шаблоны кода
Total votes 41: ↑36 and ↓5+31
Comments20

Чему я научился у C#/.Net разработчиков на конференции Go#

Reading time7 min
Views21K
Я сам разработчик C# и делал конференцию впервые. Расскажу, как я набил шишек и получил много удовольствия.

Это конференция GoSharpMoscow «День личной эффективности разработчика C#».
Она прошла в субботу 15 ноября. Это был мой «первый блин комом» или, как говорят за рубежом, MVP (Minimum Viable Product). Отчитываюсь, что удалось сделать:

  • заполнить зал на 100+%
  • сделать конференцию полезной для 95% участников
  • оправдать ожидания 70% участников.

Но самое ценное, что я получил от конференции – это обратная связь. Практически, это был TDD с экспериментами по формату и нетворкингу. Теперь наша команда знает, что нравится участникам, и каковы узкие места в организации конференции.


Читать дальше →
Total votes 43: ↑39 and ↓4+35
Comments19

Как мы внедряем Open source в госкомпаниях и крупной коммерции России

Reading time11 min
Views84K


КРОК — одна из самых больших в России компаний по построению IT-инфраструктур. У нас в год 2000+ проектов, из которых 200 штук — с бюджетом больше миллиона. Долларов. Внутри этой огромной компании есть мой небольшой отдел, который занимается тем, что ставит open source для крупных заказчиков.

Нередко приходится сталкиваться с мнением, что open source — это кривые поделки гаражных программистов. Мы работаем только с нормальным рабочим ПО; помогаем подобрать оптимальные варианты решений для инфраструктуры и обеспечиваем поддержку там, где производитель по очевидным причинам сделать этого не может. Это — не самая простая работа, в основном, связанная с мифами и легендами про открытое ПО.

Но к чёрту детали, давайте покажу, что и как можно поставить на рабочие места, сервера, в облако, для СУБД, VDI и серверов приложений. И про галстук.
Читать дальше →
Total votes 85: ↑75 and ↓10+65
Comments39
1
23 ...

Information

Rating
Does not participate
Location
Иваново, Ивановская обл., Россия
Date of birth
Registered
Activity