Pull to refresh
34
0

Разработчик

Send message

Предновогоднее: еще раз про целеполагание

Reading time5 min
Views28K
Конец календарного года – традиционное время для того, чтобы остановиться-оглянуться. Время подведения итогов и обдумывания планов на будущее – для тех, у кого вообще есть склонность к этому занятию. В попытке придать своим планам конкретный облик и бОльшую реалистичность, многие из нас прибегают к постановке собственных целей на следующий год. Я занимаюсь этим уже не первый год, для себя и других людей. Есть вещи, которые способствуют успеху целеполагания (+), и вещи, способные свести на нет весь смысл этого упражнения (-). Хочу поделиться некоторыми наблюдениями на этот счет. Надеюсь, какие-то из них пригодятся и вам. Итак.

Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments4

В мире математических парадоксов

Reading time6 min
Views112K

Доброго времени суток, уважаемое хабрасообщество.

Сегодня я хотел бы затронуть такую увлекательную тему, как математические парадоксы. По данной теме на хабре уже было опубликовано несколько замечательных статей (1,2,3,4,5), но в математике интересные парадоксы этой выборкой далеко не исчерпываются.

Поэтому попробуем рассмотреть другие занимательные парадоксы (а некоторые и «не совсем» парадоксы), которые пока еще не получили здесь должного освещения.
Читать дальше →
Total votes 98: ↑84 and ↓14+70
Comments92

Стартовал краудсорсинговый перевод OWASP Testing Guide 4.0 на 30+ языков (в т. ч. и на русский)

Reading time1 min
Views14K
image

Сегодня в твиттере проекта OWASP появилась запись, приглашающая всех желающих присоединиться к переводу OWASP Testing Guide 4.0.

Присоединиться к переводу можно здесь.
Что за OWASP такой и немного подробнестей
Total votes 14: ↑14 and ↓0+14
Comments2

Пересмотренное руководство по Grunt для начинающих

Reading time6 min
Views50K
Еще в марте 2013 года я написал статью руководство по Grunt для начинающих и она стала самой посещаемой статьей на моем сайте. Я написал ее в то время, когда сам только начинал своё знакомство с Grunt, и это было скорее руководство для себя, чем для кого-то ещё. Теперь, спустя 18 месяцев, я почувствовал, что пришло время пересмотреть как я использую Grunt потому что сейчас я знаю гораздо больше, чем в то время.

Если вам не терпится просто увидеть код, то весь он есть на Github.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments16

AngularJS + UI Router: проверка авторизации и прав доступа

Reading time3 min
Views74K
Если ваше приложение предполагает авторизацию пользователей и/или проверку прав доступа, то вам придется либо изобретать велосипед, либо гуглить в поисках подходящего решения. В принципе, я тоже это делал. В итоге я принял приемлемым для себя описанный ниже вариант.

Предпосылки


Информацию об авторизованном пользователе я решил хранить в sessionStorage, копируя её при запуске приложения в $rootScope. Также по рекомендации авторов UI Router я храню в $rootScope значения объекты $state и $stateParam, для удобного доступа. Информацию же о доступе к тому или иному состоянию можно передавать через блок data при описании самого состояния. Поскольку в моем приложении везде закрыт доступ, я решил идти от обратного и добавлять значение noLogin = true для состояний, которые не требуют авторизации, например страницы ввода логина, восстановления пароля или регистрации.
Читать дальше →
Total votes 31: ↑27 and ↓4+23
Comments23

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

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

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



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

Как теория «задач, которые нужно выполнить», способна столь многое изменить

Reading time5 min
Views23K
image

Мы продолжаем знакомить вас с переводами статей Chris Bailey, в которых он делится советами, которые извлек во время проекта «a Year of Productivity». Ранее мы публиковали статьи этого автора, они доступны в нашем блоге в разделе "личная продуктивность".

Итак, даем слово Крису!

Сегодня мы хотели бы поговорить о теории «задач, которые нужно выполнить» Клейтона Кристенсена и том, как это помогает осмыслить собственную жизнь. Ведь понимание того, какую пользу вам могут принести те или иные действия, которые вы совершаете, и то, для осуществления каких целей вы их совершаете, поможет прийти к осознанию собственной жизни и, как следствие, повышению продуктивности.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments1

Что мешает аутсорсерам работать лучше штатного админа

Reading time5 min
Views34K


Быть крутым админом недостаточно для того, чтобы открыть свой бизнес и успешно предоставлять услуги другим компаниям, замещая штатных, пусть и менее крутых специалистов. И дело не в маркетинге или продажах, а в том, что работа с внешней компанией и работа со штатным специалистом – это два разных формата взаимодействия, требующих разных подходов к работе. В общем случае, к внешней компании меньше доверия и куда больше требований – все это принято называть «потребительским отношением». Чтобы успешно работать в аутсорсинговом бизнесе нужно не только быть прозрачным и удобным для клиента, но и уметь защищать бизнес от «потребительского экстремизма». К сожалению, отсутствие понимания как совместить первое со вторым и третьим заставило разочароваться в данном бизнесе и услугах уже не одну компанию.

В данной статье я хочу рассказать об ошибках, которые допускают аутсорсеры, и которые делают их услуги менее привлекательными для клиентов по сравнению со штатным администратором.
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments54

Быстрая настройка Grunt для комфортной разработки

Reading time7 min
Views25K
Быстрая настройка Grunt для комфортной разработки

Во время разработки нашего сервиса bitcalm.com, нам потребовалось организовать автоматическую сборку проекта. Перед нами стояла цель улучшить производительность frontend-части нашего приложения, а также оптимизировать процессы разработки и развертывания на сервере.

Основными задачами, которые требовалось решить, стали:
  1. Объединение и минификация скриптов
  2. Объединение и минификация стилей
  3. Сжатие png-изображений
  4. Создание спрайтов из всех изображений (с возможностью удобного использования и с поддержкой двух видов спрайтов для девайсов с разным PPI)
  5. Построение разных версий html-документов для разработки и для продакшна

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

Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments20

26 советов начинающим стартаперам от опытного предпринимателя

Reading time11 min
Views94K
*Эта статья впервые была опубликована в журнале Forbes от 27 Июня 2014 года. На Хабре публикуется её полная версия.

Вот уже 9 лет я занимаюсь интернет-бизнесом и за это время успел создать и вывести на прибыльность 5 собственных стартапов. Кроме того, один из основных моих бизнесов – это заказная веб-разработка, куда часто приходят клиенты, которые хотят разработать свой интернет-стартап и поэтому я все 9 лет каждый день сталкиваюсь с разными проектами, многие из которых являются стартапами в полном смысле этого слова.
Читать дальше →
Total votes 71: ↑56 and ↓15+41
Comments54

AngularJS 1.x – перевод курса от CodeSchool

Reading time12 min
Views75K
Данная публикация является переводом оригинального курса CoodSchool с небольшими дополнениями, которые показались мне уместными в данном контексте. Публикация рассчитана на тех, кто только начинает знакомится с Angular.

Введение


AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments20

«Защита от дурака» или как запретить изменение/удаление важных папок

Reading time2 min
Views48K
Доброе время суток.

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

/home/hostuser/vhosts/sitename.ru/{tmp,web,logs}

И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?
Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments39

«Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера

Reading time3 min
Views59K

Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"

Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).

Gardner100_1.gif

Читать далее...
Total votes 78: ↑75 and ↓3+72
Comments18

Аутентификация на основе JSON Web Token в Django и AngularJS: часть вторая

Reading time8 min
Views19K
В первой части мы рассмотрели, что для формирования JSON Web Token необходимы: сериализаторы и представления.

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

Bower, менеджер пакетов для web-приложений


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

Предполагается что у вас уже установлен Node.js. Для установки bower просто выполните следующую команду:
$ npm install -g bower

Примечание: Возможно понадобятся права администратора.
Для того чтобы изменить каталог по умолчанию, в который bower будет устанавливать пакеты, в корне вашего проекта создайте файл с названием “.bowerrc ” и добавьте в него следующие строки:
{
    "directory": "static/bower_components"
}

Мы указали каталог “static”, чтобы эти компоненты были доступны в Django.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments3

Давим шумы средствами PulseAudio

Reading time2 min
Views78K
image
Часто вижу, как владельцы ноутбуков жалуются на шумы микрофона в Linux, в то время как под Windows их меньше, либо же они вообще отсутствуют. Как правило, виноват в этом производитель, установивший самый дешевый микрофон и/или кодек из возможных, надеясь на сглаживание отвратительного качества железа программными средствами.
К счастью, в Linux есть замечательный аудиосервер PulseAudio, с помощью которого можно сделать аудио с вашего микрофона заметно качественней.

Способ #1

Для того, чтобы использовать встроенный модуль подавления шума и эха PulseAudio, работающий по алгоритму webrtc или speex, для какой-то конкретной программы, достаточно запустить ее с переменной окружения:
PULSE_PROP="filter.want=echo-cancel"

И весь ваш звук магическим образом будет избавлен от шумов и эха!
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments38

Mosh — SSH с блекджеком и роумингом

Reading time3 min
Views66K
На Хабре пару лет назад уже упоминали Mosh, но, кажется, есть смысл напомнить хабражителям об этой великолепной программе, которая, вполне возможно, станет для кого-то одним из самых приятных открытий и облегчит жизнь.

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



Чем же mosh лучше традиционного ssh-client, какие проблемы решает и почему вы, скорее всего, на него перейдете?
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments116

В поисках ответа на вопрос, как сделать людей более ответственными…

Reading time5 min
Views54K
Довольно частый запрос от коллег-менеджеров, который приходится слышать: как повысить ответственность человека?

Казалось бы, человечество за тысячи лет своего существования должно было прийти к какому-то алгоритму повышения ответственности. И вот он, твой тренерский шанс — изложи этот алгоритм и измени навсегда жизнь отдельно взятого менеджера!

Однако, в жизни все сложнее… Приходится заниматься занудными уточнениями: а сейчас люди как работают? — Ну… безответственно.

Хм, яснее не становится. Хочется ехидно уточнить: “в смысле, бросают жен и детей?”, но в реальности, начинаешь разбираться.
Что выясняется в итоге?
Total votes 48: ↑36 and ↓12+24
Comments68

Использование RequireJS в приложениях AngularJS

Reading time6 min
Views17K
При написании больших JavaScript-приложений одна из самых простых вещей, которую можно сделать, это разделить код на несколько файлов. Это улучшает поддерживаемость кода, но увеличивает шансы потерять или ошибиться со вставкой тега script в главный HTML-документ. Отслеживание зависимостей затрудняется с ростом числа файлов проекта. Эта проблема присутствует в больших AngularJS приложениях до сих пор. У нас есть целый ряд инструментов, которые заботятся о загрузке зависимостей в приложении.

В этой статье мы рассмотрим, использование RequireJS с AngularJS для упрощения загрузки зависимостей. Мы также рассмотрим, как использовать Grunt для генерации файлов, содержащих модули RequireJS.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments15

Postgres. Выборка N случайных записей

Reading time6 min
Views36K
При работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:

  • из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).

А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.

Первое, что приходит в голову:

 SELECT *
  FROM data_set
  WHERE id NOT IN (1,2,3,4, 5)
  ORDER BY random()
  LIMIT 5;

И это даже будет работать. Вот только цена такого решения…
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments47

Внедрение программного продукта. Особенности работы бизнес-консультанта. Часть I

Reading time9 min
Views52K
Труд — это отец удовольствия.

Стендаль.

Сегодня я продолжаю рассказывать о работе бизнес-консультанта с малым и средним бизнесом. Напомню, что я уже рассказал, как знакомиться с клиентом, как показать себя с лучшей стороны и убедить руководителя компании в том, что нужно именно вам предоставить выбор программного продукта, а также, как собрать информацию, которая необходима для правильного выбора.
Кроме того, я подробно рассказал, как именно презентовать выбранное вами решение. В статье «Презентуем программный продукт. Как убедить клиента в вашем выборе» мы обсудили различные нюансы этого этапа работы. А теперь, как я и обещал, поговорим о следующем этапе, о внедрении.

Внедрение программного продукта с точки зрения бизнес-консультанта.


Перед тем, как говорить о каких-то действиях, я хочу вам напомнить очень важный момент. Вы – не продавец программного обеспечения. Вы – бизнес-консультант. А потому ваша основная цель – это решить поставленные задачи, а не продать какое-либо ПО…
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments1

Information

Rating
Does not participate
Location
Plovdiv, Plovdiv, Болгария
Registered
Activity