Конец календарного года – традиционное время для того, чтобы остановиться-оглянуться. Время подведения итогов и обдумывания планов на будущее – для тех, у кого вообще есть склонность к этому занятию. В попытке придать своим планам конкретный облик и бОльшую реалистичность, многие из нас прибегают к постановке собственных целей на следующий год. Я занимаюсь этим уже не первый год, для себя и других людей. Есть вещи, которые способствуют успеху целеполагания (+), и вещи, способные свести на нет весь смысл этого упражнения (-). Хочу поделиться некоторыми наблюдениями на этот счет. Надеюсь, какие-то из них пригодятся и вам. Итак.
Разработчик
В мире математических парадоксов
6 min
112KДоброго времени суток, уважаемое хабрасообщество.
Сегодня я хотел бы затронуть такую увлекательную тему, как математические парадоксы. По данной теме на хабре уже было опубликовано несколько замечательных статей (1,2,3,4,5), но в математике интересные парадоксы этой выборкой далеко не исчерпываются.
Поэтому попробуем рассмотреть другие занимательные парадоксы (а некоторые и «не совсем» парадоксы), которые пока еще не получили здесь должного освещения.
+70
Стартовал краудсорсинговый перевод OWASP Testing Guide 4.0 на 30+ языков (в т. ч. и на русский)
1 min
14KСегодня в твиттере проекта OWASP появилась запись, приглашающая всех желающих присоединиться к переводу OWASP Testing Guide 4.0.
Присоединиться к переводу можно здесь.
+14
Пересмотренное руководство по Grunt для начинающих
6 min
50KTutorial
Translation
Еще в марте 2013 года я написал статью руководство по Grunt для начинающих и она стала самой посещаемой статьей на моем сайте. Я написал ее в то время, когда сам только начинал своё знакомство с Grunt, и это было скорее руководство для себя, чем для кого-то ещё. Теперь, спустя 18 месяцев, я почувствовал, что пришло время пересмотреть как я использую Grunt потому что сейчас я знаю гораздо больше, чем в то время.
Если вам не терпится просто увидеть код, то весь он есть на Github.
Если вам не терпится просто увидеть код, то весь он есть на Github.
+18
AngularJS + UI Router: проверка авторизации и прав доступа
3 min
74KTutorial
Если ваше приложение предполагает авторизацию пользователей и/или проверку прав доступа, то вам придется либо изобретать велосипед, либо гуглить в поисках подходящего решения. В принципе, я тоже это делал. В итоге я принял приемлемым для себя описанный ниже вариант.
Информацию об авторизованном пользователе я решил хранить в sessionStorage, копируя её при запуске приложения в
Предпосылки
Информацию об авторизованном пользователе я решил хранить в sessionStorage, копируя её при запуске приложения в
$rootScope
. Также по рекомендации авторов UI Router я храню в $rootScope значения объекты $state
и $stateParam
, для удобного доступа. Информацию же о доступе к тому или иному состоянию можно передавать через блок data
при описании самого состояния. Поскольку в моем приложении везде закрыт доступ, я решил идти от обратного и добавлять значение noLogin = true
для состояний, которые не требуют авторизации, например страницы ввода логина, восстановления пароля или регистрации.+23
Сергей Архипенков: «Интеллектуальными людьми невозможно управлять»
4 min
26KСегодня информационные технологии невозможно представить без грамотного управления. Программирование перестает быть «уделом избранных», привлекая все больше и больше людей к работе в этой области. Поэтому все важнее становится профессия менеджера IT-проектов, способного собрать команду первоклассных специалистов и в заданные сроки решить поставленную задачу.
Что представляет собой проектный менеджмент в IT, какова личность современного руководителя проекта и что необходимо сделать, чтобы стать профессионалом в этой области? Об этом расскажет Сергей Архипенков craft_brother, директор департамента комплексных архитектурных решений ЗАО «Эр-Стайл», автор 5 книг, более 100 статей, докладов и курсов, председатель программного комитета конференции по вопросам управления IT-проектами SPM Conf – 4.
Что представляет собой проектный менеджмент в IT, какова личность современного руководителя проекта и что необходимо сделать, чтобы стать профессионалом в этой области? Об этом расскажет Сергей Архипенков craft_brother, директор департамента комплексных архитектурных решений ЗАО «Эр-Стайл», автор 5 книг, более 100 статей, докладов и курсов, председатель программного комитета конференции по вопросам управления IT-проектами SPM Conf – 4.
+14
Как теория «задач, которые нужно выполнить», способна столь многое изменить
5 min
23KTranslation
Мы продолжаем знакомить вас с переводами статей Chris Bailey, в которых он делится советами, которые извлек во время проекта «a Year of Productivity». Ранее мы публиковали статьи этого автора, они доступны в нашем блоге в разделе "личная продуктивность".
Итак, даем слово Крису!
Сегодня мы хотели бы поговорить о теории «задач, которые нужно выполнить» Клейтона Кристенсена и том, как это помогает осмыслить собственную жизнь. Ведь понимание того, какую пользу вам могут принести те или иные действия, которые вы совершаете, и то, для осуществления каких целей вы их совершаете, поможет прийти к осознанию собственной жизни и, как следствие, повышению продуктивности.
+11
Что мешает аутсорсерам работать лучше штатного админа
5 min
34KБыть крутым админом недостаточно для того, чтобы открыть свой бизнес и успешно предоставлять услуги другим компаниям, замещая штатных, пусть и менее крутых специалистов. И дело не в маркетинге или продажах, а в том, что работа с внешней компанией и работа со штатным специалистом – это два разных формата взаимодействия, требующих разных подходов к работе. В общем случае, к внешней компании меньше доверия и куда больше требований – все это принято называть «потребительским отношением». Чтобы успешно работать в аутсорсинговом бизнесе нужно не только быть прозрачным и удобным для клиента, но и уметь защищать бизнес от «потребительского экстремизма». К сожалению, отсутствие понимания как совместить первое со вторым и третьим заставило разочароваться в данном бизнесе и услугах уже не одну компанию.
В данной статье я хочу рассказать об ошибках, которые допускают аутсорсеры, и которые делают их услуги менее привлекательными для клиентов по сравнению со штатным администратором.
+22
Быстрая настройка Grunt для комфортной разработки
7 min
25KВо время разработки нашего сервиса bitcalm.com, нам потребовалось организовать автоматическую сборку проекта. Перед нами стояла цель улучшить производительность frontend-части нашего приложения, а также оптимизировать процессы разработки и развертывания на сервере.
Основными задачами, которые требовалось решить, стали:
- Объединение и минификация скриптов
- Объединение и минификация стилей
- Сжатие png-изображений
- Создание спрайтов из всех изображений (с возможностью удобного использования и с поддержкой двух видов спрайтов для девайсов с разным PPI)
- Построение разных версий html-документов для разработки и для продакшна
Первые три пункта выглядят достаточно тривиальными, поэтому я постараюсь заострить внимание на работе со спрайтами и на обработке html.
+25
26 советов начинающим стартаперам от опытного предпринимателя
11 min
94KTutorial
*Эта статья впервые была опубликована в журнале Forbes от 27 Июня 2014 года. На Хабре публикуется её полная версия.
Вот уже 9 лет я занимаюсь интернет-бизнесом и за это время успел создать и вывести на прибыльность 5 собственных стартапов. Кроме того, один из основных моих бизнесов – это заказная веб-разработка, куда часто приходят клиенты, которые хотят разработать свой интернет-стартап и поэтому я все 9 лет каждый день сталкиваюсь с разными проектами, многие из которых являются стартапами в полном смысле этого слова.
Вот уже 9 лет я занимаюсь интернет-бизнесом и за это время успел создать и вывести на прибыльность 5 собственных стартапов. Кроме того, один из основных моих бизнесов – это заказная веб-разработка, куда часто приходят клиенты, которые хотят разработать свой интернет-стартап и поэтому я все 9 лет каждый день сталкиваюсь с разными проектами, многие из которых являются стартапами в полном смысле этого слова.
+41
AngularJS 1.x – перевод курса от CodeSchool
12 min
75KДанная публикация является переводом оригинального курса CoodSchool с небольшими дополнениями, которые показались мне уместными в данном контексте. Публикация рассчитана на тех, кто только начинает знакомится с Angular.
AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
Введение
AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
+38
«Защита от дурака» или как запретить изменение/удаление важных папок
2 min
48KДоброе время суток.
Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:
И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?
Исторически так сложилось, что для своих мелких проектов держу виртуалку. Однако, так как я не использую ее ресурсы на 100%, решил не жадничать и пустил похоститься несколько друзей. Сайтов не много, деньги за хостинг не беру, поэтому ставить что-то вроде cpanel счел перебором. К тому же я их тех, кто предпочитает настраивать все вручную. Структуру выбрал следующую:
/home/hostuser/vhosts/sitename.ru/{tmp,web,logs}
И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?
+9
«Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера
3 min
59KTutorial
Translation
Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"
Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).
+72
Аутентификация на основе JSON Web Token в Django и AngularJS: часть вторая
8 min
19KTranslation
В первой части мы рассмотрели, что для формирования JSON Web Token необходимы: сериализаторы и представления.
Теперь мы создадим шаблоны и поработаем над сервисами для аутентификации и получения данных.
Прежде чем перейдем к коду, давайте установим все необходимые зависимости. Для этого мы будем использовать Bower, он является идеальным инструментом для управления зависимостями web-приложений.
Предполагается что у вас уже установлен Node.js. Для установки bower просто выполните следующую команду:
Примечание: Возможно понадобятся права администратора.
Для того чтобы изменить каталог по умолчанию, в который bower будет устанавливать пакеты, в корне вашего проекта создайте файл с названием “.bowerrc ” и добавьте в него следующие строки:
Мы указали каталог “static”, чтобы эти компоненты были доступны в Django.
Теперь мы создадим шаблоны и поработаем над сервисами для аутентификации и получения данных.
Bower, менеджер пакетов для web-приложений
Прежде чем перейдем к коду, давайте установим все необходимые зависимости. Для этого мы будем использовать Bower, он является идеальным инструментом для управления зависимостями web-приложений.
Предполагается что у вас уже установлен Node.js. Для установки bower просто выполните следующую команду:
$ npm install -g bower
Примечание: Возможно понадобятся права администратора.
Для того чтобы изменить каталог по умолчанию, в который bower будет устанавливать пакеты, в корне вашего проекта создайте файл с названием “.bowerrc ” и добавьте в него следующие строки:
{
"directory": "static/bower_components"
}
Мы указали каталог “static”, чтобы эти компоненты были доступны в Django.
+12
Давим шумы средствами PulseAudio
2 min
78KЧасто вижу, как владельцы ноутбуков жалуются на шумы микрофона в Linux, в то время как под Windows их меньше, либо же они вообще отсутствуют. Как правило, виноват в этом производитель, установивший самый дешевый микрофон и/или кодек из возможных, надеясь на сглаживание отвратительного качества железа программными средствами.
К счастью, в Linux есть замечательный аудиосервер PulseAudio, с помощью которого можно сделать аудио с вашего микрофона заметно качественней.
Способ #1
Для того, чтобы использовать встроенный модуль подавления шума и эха PulseAudio, работающий по алгоритму webrtc или speex, для какой-то конкретной программы, достаточно запустить ее с переменной окружения:PULSE_PROP="filter.want=echo-cancel"
И весь ваш звук магическим образом будет избавлен от шумов и эха!
+37
Mosh — SSH с блекджеком и роумингом
3 min
66KНа Хабре пару лет назад уже упоминали Mosh, но, кажется, есть смысл напомнить хабражителям об этой великолепной программе, которая, вполне возможно, станет для кого-то одним из самых приятных открытий и облегчит жизнь.
Забегая наперед, сразу спойлер — для mosh не нужны права суперпользователя, он не является демоном, и не занимается аутентификацией и шифрованием (это остается на плечах ssh). Разработали его в MIT, активно развивают, и поддерживают для всех платформ и дистрибутивов.
Чем же mosh лучше традиционного ssh-client, какие проблемы решает и почему вы, скорее всего, на него перейдете?
Забегая наперед, сразу спойлер — для mosh не нужны права суперпользователя, он не является демоном, и не занимается аутентификацией и шифрованием (это остается на плечах ssh). Разработали его в MIT, активно развивают, и поддерживают для всех платформ и дистрибутивов.
Чем же mosh лучше традиционного ssh-client, какие проблемы решает и почему вы, скорее всего, на него перейдете?
+52
В поисках ответа на вопрос, как сделать людей более ответственными…
5 min
54KДовольно частый запрос от коллег-менеджеров, который приходится слышать: как повысить ответственность человека?
Казалось бы, человечество за тысячи лет своего существования должно было прийти к какому-то алгоритму повышения ответственности. И вот он, твой тренерский шанс — изложи этот алгоритм и измени навсегда жизнь отдельно взятого менеджера!
Однако, в жизни все сложнее… Приходится заниматься занудными уточнениями: а сейчас люди как работают? — Ну… безответственно.
Хм, яснее не становится. Хочется ехидно уточнить: “в смысле, бросают жен и детей?”, но в реальности, начинаешь разбираться.
Казалось бы, человечество за тысячи лет своего существования должно было прийти к какому-то алгоритму повышения ответственности. И вот он, твой тренерский шанс — изложи этот алгоритм и измени навсегда жизнь отдельно взятого менеджера!
Однако, в жизни все сложнее… Приходится заниматься занудными уточнениями: а сейчас люди как работают? — Ну… безответственно.
Хм, яснее не становится. Хочется ехидно уточнить: “в смысле, бросают жен и детей?”, но в реальности, начинаешь разбираться.
+24
Использование RequireJS в приложениях AngularJS
6 min
17KTutorial
Translation
При написании больших JavaScript-приложений одна из самых простых вещей, которую можно сделать, это разделить код на несколько файлов. Это улучшает поддерживаемость кода, но увеличивает шансы потерять или ошибиться со вставкой тега script в главный HTML-документ. Отслеживание зависимостей затрудняется с ростом числа файлов проекта. Эта проблема присутствует в больших AngularJS приложениях до сих пор. У нас есть целый ряд инструментов, которые заботятся о загрузке зависимостей в приложении.
В этой статье мы рассмотрим, использование RequireJS с AngularJS для упрощения загрузки зависимостей. Мы также рассмотрим, как использовать Grunt для генерации файлов, содержащих модули RequireJS.
В этой статье мы рассмотрим, использование RequireJS с AngularJS для упрощения загрузки зависимостей. Мы также рассмотрим, как использовать Grunt для генерации файлов, содержащих модули RequireJS.
+9
Postgres. Выборка N случайных записей
6 min
36KПри работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:
А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.
Первое, что приходит в голову:
И это даже будет работать. Вот только цена такого решения…
- из 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;
И это даже будет работать. Вот только цена такого решения…
+46
Внедрение программного продукта. Особенности работы бизнес-консультанта. Часть I
9 min
52KТруд — это отец удовольствия.
Стендаль.
Сегодня я продолжаю рассказывать о работе бизнес-консультанта с малым и средним бизнесом. Напомню, что я уже рассказал, как знакомиться с клиентом, как показать себя с лучшей стороны и убедить руководителя компании в том, что нужно именно вам предоставить выбор программного продукта, а также, как собрать информацию, которая необходима для правильного выбора.
Кроме того, я подробно рассказал, как именно презентовать выбранное вами решение. В статье «Презентуем программный продукт. Как убедить клиента в вашем выборе» мы обсудили различные нюансы этого этапа работы. А теперь, как я и обещал, поговорим о следующем этапе, о внедрении.
Внедрение программного продукта с точки зрения бизнес-консультанта.
Перед тем, как говорить о каких-то действиях, я хочу вам напомнить очень важный момент. Вы – не продавец программного обеспечения. Вы – бизнес-консультант. А потому ваша основная цель – это решить поставленные задачи, а не продать какое-либо ПО…
+11
Information
- Rating
- Does not participate
- Location
- Plovdiv, Plovdiv, Болгария
- Registered
- Activity