Pull to refresh
12
0
Вячеслав Конашков (SunDrop) @SunDrop

User

Send message

У нас проблемы с промисами

Reading time16 min
Views236K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи
Total votes 139: ↑136 and ↓3+133
Comments121

Best practices от Google по разработке Android приложений

Reading time8 min
Views45K
В данной статье я хотел бы вкратце рассказать про самые последние best practices от Google. Я постарался выделить самые основные моменты, чтобы читатель сразу мог понять, что именно какая-либо фича дает разработчику. Не удивляйтесь, если где-то повторяюсь. Конспектировал + добавлял от себя по ходу просмотров видео в www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg

Также к каждому пункту приводятся все необходимые ссылки для более подробного ознакомления с конкретной best practice.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments18

Статические члены класса. Не дай им загубить твой код

Reading time11 min
Views82K
Давно хотел написать на эту тему. Первым толчком послужила статья Miško Hevery "Static Methods are Death to Testability". Я написал ответную статью, но так и не опубликовал ее. А вот недавно увидел нечто, что можно назвать «Классо-Ориентированное Программирование». Это освежило мой интерес к теме и вот результат.

«Классо-Ориентированое Программирование» — это когда используются классы, состоящие только из статических методов и свойств, а экземпляр класса никогда не создается. В этой статье я буду говорить о том, что:
  • это не дает никаких преимуществ по сравнению с процедурным программированием
  • не стоит отказываться от объектов
  • наличие статических членов класса != смерть тестам

Хотя эта статья про PHP, концепции применимы и к другим языкам.
Читать дальше →
Total votes 78: ↑65 and ↓13+52
Comments48

Правильное использование Exception’ов в PHP

Reading time16 min
Views120K
Я рад бы написать что “эта статья предназначена для новичков”, но это не так. Большинство php-разработчиков, имея опыт 3, 5 и даже 7 лет, абсолютно не понимают как правильно использовать эксепшены. Нет, они прекрасно знают о их существовании, о том что их можно создавать, обрабатывать, и т.п., но они не осознают их удобность, логичность, и не воспринимают их как абсолютно нормальный элемент разработки.

В этой статье не будет мануала по эксепшенам — это все отлично описано в документации php. Здесь я я расскажу о преимуществах использования эксепшенов, и о том, где их, собственно говоря, надо использовать. Все примеры будут для Yii, но это не особо важно.
Читать дальше →
Total votes 46: ↑42 and ↓4+38
Comments70

Как я использую трейты

Reading time6 min
Views38K
Недавно несколько человек просили меня рассказать об использовании трейтов в новом проекте, который я пишу. Примерно в тоже время Рафаэль Домс показал мне его новую речь о сложных когнитивных процессах, которые мы не замечаем. Так как наш мозг — это большой мешок, перемешивающий все, в результате получился пост, который пытается охватить и то как я использую трейты, и то как я решаю где они нужны.

Воздействие vs Абстракция


Первое, что вы должны сделать — пойти почитать пост “Abstraction or Leverage” от Майкла Найгарда. Это отличная статья.

Если же у вас мало времени, основная суть поста состоит в том, что части кода (функции, классы, методы и т.д.) могут предназначаться либо для абстракции, либо для воздействия. Разница в:

  • Абстракция содержит высокоуровневый концептуальный код, позволяющий лаконичнее работать с ним другому коду.
  • Воздействие содержит код, изменения в котором влияют лишь на определенную часть.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments31

PHPUnit: Электронная таблица (spreadsheet) в качестве источника данных (data provider)

Reading time3 min
Views8.1K
В документации PHPUnit есть небольшой раздел посвященный источникам данных (data provider), которые позволяют скормить тесту большой объем данных, а чуть ниже есть даже пример источника данных для CSV файла.
но что делать если хочется отдельную страницу для каждого теста?
Total votes 15: ↑12 and ↓3+9
Comments2

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Views87K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments36

Читаем QR код

Reading time5 min
Views1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Total votes 623: ↑614 and ↓9+605
Comments109

Стрелочные функции (Arrow functions) в ECMAScript 6

Reading time7 min
Views90K
Arrow functions madness
Одной из самых интересных частей нового стандарта ECMAScript 6 являются стрелочные функции. Стрелочные функции, как и понятно из названия определяются новым синтаксисом, который использует стрелку =>. Однако, помимо отличного синтаксиса, стрелочные функции отличаются от традиционных функций и в других моментах:
  • Лексическое связывание. Значения специальных переменных this, super и arguments определяются не тем, как стрелочные функции были вызваны, а тем, как они были созданы.
  • Неизменяемые this, super и arguments. Значения этих переменных внутри стрелочных функций остаются неизменными на протяжении всего жизненного цикла функции.
  • Стрелочные функции не могут быть использованы как конструктор и кидают ошибку при использовании с оператором new.
  • Недоступность «собственного» значения переменной arguments.

Было несколько причин для введения этих отличий. Первоочередная — это то, что связывание (binding) используется довольно часто в JavaScript. Очень легко потерять нужное значение this при использовании традиционных функций, что может привести к непредсказуемым последствиям. Другая причина, это то, что JS-движки смогут легко оптимизировать выполнение стрелочных функций за счет этих ограничений (в противоположность традиционным функциям, которые могут быть использованы в качестве конструктора и которые свободны для модификации специальных переменных).

Подробности
Total votes 118: ↑110 and ↓8+102
Comments62

Хорошая практика в Symfony 2 (по личному опыту)

Reading time2 min
Views12K
Доброго времени суток, уважаемые хабравчане. Сегодня увидел статью на хабре «Официальный гайд по лучшим практикам в Symfony» и понял, что мне есть что исправить добавить. К вашему вниманию список личных советов и объяснение к ним.

Используйте по меньше аннотаций


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

  • Максимум в файлах конфигурации ( например yml);
  • Немножко в файлы, немножко в аннотации.


Если выбрать второй вариант, то при росте проекта получается каша. И в вашем коде аннотаций больше, чем логики. Отговорки по типу «так легче находить роуты» не принимаются. Так как если расскидывать файлы конфигураций правильно, ты всегда знаешь, где находятся роуты к определённым контроллерам. Я уже молчу про команды в консоли, по типу route:debug, и отладчик, в котором видно название екшена и имя роута.
Читать дальше →
Total votes 29: ↑19 and ↓10+9
Comments30

Лучшие плагины для Sublime Text

Reading time5 min
Views639K

WebInspector


Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



Читать дальше →
Total votes 116: ↑114 and ↓2+112
Comments101

Marketing by Sharing (перевод и субтитры для выступления Джейсона Фрида)

Reading time13 min
Views3.2K

Мы с ребятами продолжаем потихоньку переводить выступления с идеями, которые нам импонируют и которым мы сами стараемся следовать.
Сегодня я предлагаю вашему вниманию выступление одного из основателей 37signals Джейсона Фрида (Jason Fried) на конференции ChicagoConvergence в 2009 году. Он рассказывает о том, как, делясь своими знаниями и опытом, незаметно для себя делаешь лучшую рекламу — рекламу, которую не купишь за деньги.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments1

Изучение английского языка с помощью параллельных переводов

Reading time2 min
Views71K
Изучение английского языка — дело непростое и небыстрое. Хотя этот язык и считается одним из самых простых и прозрачных для изучения, но в действительности прозрачен в английском языке только синтаксис. Специфика произношения английских слов и наличие большого количества идиом значительно усложняют изучение этого языка. Если при разговоре на русском языке основную роль играют согласные, то при разговоре на английском языке основное внимание уделяется гласным.

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

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

На сайте getParallelTranslations.com процесс изучения английских слов с помощью параллельных переводов выглядит следующим образом.

Есть набор художественных книг. На данный момент их около пятидесяти. Вы можете выбрать любую из книг для изучения английского языка.
Каждая книга разбита на предложения как показано на рисунке ниже.
Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments67

Bitcasa продолжает разгон

Reading time1 min
Views4K
Думаю, многие знакомы с Bitcasa, которая позиционирует себя как «неограниченное» хранилище. В очередных письмах от нее пришло предложение скачать клиент (Mac, Win, Linux), что я и сделал. После подключения я попал в хранилище, где уже находится папка Sample Videos. Можно примаунтить и свою папку.

Нужное подчеркнуто красным :))
Для теста попробовал открыть видео прямо оттуда, не скачивая. Все заработало и это радует.
Читать дальше →
Total votes 52: ↑44 and ↓8+36
Comments133

PR вместо секса

Reading time2 min
Views769

Модное словосочетание public relations (PR) или связи с общественностью бедет скоро на пике популярности. Разве не так? Признайтесь, в Вашей компании есть отдел PR? Не скромничайте, он есть. Вы долго не понимали для чего он нужен, но все же он был создан и сейчас благополучно функционирует.

Еще я Вам скажу, что этот самый отдел занимается много чем: от рекламы до построения взаимовыгодных отношений с партнерами, рекламодателями и всеми остальными. Этот же отдел организует корпоративные мероприятия, заказывает сувенирную продукцию и еще многим чего «несет» на себе.

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

Читать дальше →
Total votes 13: ↑6 and ↓7-1
Comments20

Основы программирования под Android на примере игры Судоку

Reading time6 min
Views375K
В статье описаны основные трудности создания приложений под Android.
Рассматриваются базовые понятия программирования Android.
Для примера описано создание игры Sudoku из книги Hello, Android – Ed Burnette.
Осторожно много скриншотов.

Читать дальше →
Total votes 137: ↑131 and ↓6+125
Comments48

7 причин, по которым вы не находите работу

Reading time2 min
Views4.1K
Итак, вы составили отличное резюме, у вас есть все навыки, знания и опыт для того, чтобы получить отличную работу — вы стали мечтой работодателя! Так, почему же вы уже год ищете работу, а перспектива её найти становится всё более расплывчатой?

Вот, семь причин, по которым вам не удаётся найти работу:

1. Вы не делаете поиски работы своей работой!
Много людей боятся быть слишком затянутыми в процесс поиска. Они не видят за процессом поиска работы игру цифр. Интервью — это тоже цифры. Чем больше вы на них ходите, тем выше шанс, чтобы вам перезвонили, чем чаще вам перезванивают, тем выше вероятность, что вы, наконец-то, найдёте работу.
Читать дальше →
Total votes 39: ↑29 and ↓10+19
Comments60

Шесть вопросов, которые приводят к заключению сделки

Reading time3 min
Views2.8K
Предлагаю вам универсальную схему постановки вопросов, которая даст вам значительные преимущества в переговорах. Эту схему можно применять не только для продажи, но и для любых других целей, которые предполагают получение от собеседника чего-либо: согласия на продолжение взаимодействия, дополнительной информации и так далее…

1 Вопрос о мнении. Задайте вопрос о мнении собеседника на какой-либо вопрос, который не подразумевает принятия решения. Выражение своего отношения ни к чему не обязывает и не раскрывает конфиденциальной информации. Рассказывая, человек начинает видеть в вас заинтересованного человека и начинает доверять вам.
Итак, собеседник выразил определенное мнение, начал видеть в вас понимающего собеседника и можно переходить непосредственно к теме встречи.
Читать дальше →
Total votes 34: ↑24 and ↓10+14
Comments36

Факторы, влияющие на релевантность блога в Google Blogsearch

Reading time1 min
Views617
В отличие от многих поисковиков по блогам, поисковик Google по умолчанию выводит результаты в зависимости от релевантности. Опубликованный патент даёт ответ на вопрос, в зависимости от чего ранжируются блоги в результатах поиска.

Позитивным для блога являются:
  • ссылки на блог в других блогроллах;
  • ссылки на блог с других сайтов, которые не являются блогами;
  • использование тегов для категоризации контента;
  • PageRank;
  • количество подписчиков на RSS блога;
  • кол-во переходов со страниц результатов поиска и т.д.

Негативно влияют следующие факторы:
  • публикация постов через короткие промежутки времени с чётким интервалом;
  • контент блога отличается от содержания RSS;
  • повышенное содержание ключевых слов, которые считаются «спамерскими»;
  • большое количество дублирующегося контента;
  • одинаковый или почти одинаковый размер постов;
  • ссылки на один и тот же сайт во многих постах;
  • большое количество рекламных блоков, баннеров и их расположение и т.д.
via
Total votes 27: ↑24 and ↓3+21
Comments10

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity