Как стать автором
Обновить
4
0
krugvs @krugvs

Пользователь

Отправить сообщение

Обзор и классификация CMS по категориям (2013)

Время на прочтение30 мин
Количество просмотров236K
Недавний поиск списка CMS, на примере которых можно было бы объяснить студентам архитектуру и структуру сложного web-сайта, привел меня к любопытной статье с классификацией CMS, которая, однако, на текущий момент немного устарела, да и написана несколько сумбурно. Это подвигло меня составить новый обзор, собрав больше решений и дополнив их по возможности ссылками на официальные сайты, страницы закачки и демо-панели.

Я рассматривала CMS на php, в основном бесплатные, за некоторым исключением. В результате на текущий момент получился такой набор:

CMS общего назначения: Alto CMS, Cogear, Contao, Cotonti, DataLifeEngine, Drupal, ImageCMSCorporate, Joomla, Host CMS, MaxSiteCMS, MODX, MosquitoBloodyMary, ReloadCMS, Wordpress
Галереи: Coppermine, Gallery (Gallery2, обновленная до версии 3), Koken, MG2 = MiniGal 2, Pikateka, SimpleViewer, Zenphoto
Социальные сети: Elgg, Explay CMS, InstantCMS, LiveStreet, BigStreet
Форумы: IPB (Invision Power Board), Phorum, phpBB, phpBBex, PunBB, Simple Machines Forum, Vanilla, vBulletin
Интернет-магазины: ECShop, Magento, OpenCart, Семейство osCommerce, Prestashop
Сайты-визитки без SQL-базы: GetSimple, Monstra, Nanote, Stacey, CMS Чайник
Читать дальше →
Всего голосов 85: ↑63 и ↓22+41
Комментарии69

Кто такой «Full Stack» разработчик?

Время на прочтение4 мин
Количество просмотров34K
Разумно ли ожидать, что каждый разработчик будет мастером в любом аспекте процесса разработки? Вероятнее всего нет, однако Facebook может потребовать от вас это. Будучи на конференции OSCON, работник Facebook сказал мне, что они нанимают только «Full Stack» разработчиков. Хорошо, но что это значит?

Для меня, «Full Stack» Разработчик — это кто-то, кто знаком с каждым аспектом: превосходно владеющий многими из них и проявляющий неподдельный интерес ко всем технологиям.

Квалифицированные разработчики, хорошо знакомые со всеми аспектами, могут существенно облегчить жизнь окружающим их людям. Поэтому я так против жесткого разделения труда на рабочем месте. Конечно, в больших организациях политика и коммуникационные проблемы мешают этому. Я считаю, что суть политики найма Facebook в том, что если умные люди используют свои головы и свои сердца, то лучший продукт можно сделать за меньшее время.
Читать дальше →
Всего голосов 86: ↑64 и ↓22+42
Комментарии79

Разработка web API

Время на прочтение9 мин
Количество просмотров287K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше
Всего голосов 235: ↑224 и ↓11+213
Комментарии128

Путь JavaScript модуля

Время на прочтение28 мин
Количество просмотров121K


На момент написания этой статьи в JavaScript еще не существовало официальной модульной системы и все эмулировали модули как могли.

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

Вот в JavaScript своя атмосфера — в языке нет официальных модулей, более того все файлы лежат удаленно, один поток приложения. Приходится постоянно решать какие-то странные проблемы с загрузкой, хитро паковать модули в один файлы, чтобы ускорить время загрузки. Бывает, что нужно воевать с двойными стандартами, адаптировать модули другого формата.

Дело в том, что раньше не думали, что на JavaScript можно делать огромные проекты, а не просто «пропатчить DOM», поэтому о модулях не думали. Да и вообще не думали о будущем. И тут Внезапно будущее нагрянуло! Все вроде-бы уже есть, а модули в JavaScript, мягко говоря, запаздывают. Поэтому разработчикам приходится крутиться и выдумывать какие-то эмуляторы модульности.

Думаю многие из вас читали прекрасную статью Addy Osmani Writing Modular JavaScript With AMD, CommonJS & ES Harmony, которая стала одной из глав его книги Learning JavaScript Design Patterns в этой статье рассказывается про «современные» JavaScript модули или же читали достаточно старую статью JavaScript Module Pattern: In-Depth 2010 года про «старые» модули.

Я не буду переводить эти статьи и не буду делать из них солянку. В своей статья я хочу рассказать о моем модульном пути. О том как я проделал путь от «старых» модулей к «новым» и что использую сейчас и почему.
Читать дальше →
Всего голосов 188: ↑185 и ↓3+182
Комментарии71

Загадка выпадающего списка «Амазона»

Время на прочтение2 мин
Количество просмотров191K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



Запаздывание необходимо не только для того, чтобы сберечь ресурсы машины пользователя, но и по соображениям юзабилити: если не добавить задержку, то переводить курсор мыши на выпавшее подменю будет неудобно, придётся вести его сначала горизонтально в меню, не задевая другие пункты, и лишь после выбирать нужный подпункт.
Читать дальше →
Всего голосов 558: ↑548 и ↓10+538
Комментарии90

Бесплатные звонки в США и Канаду с любого SIP устройства

Время на прочтение6 мин
Количество просмотров65K
image

Как многие уже могли догадаться, речь пойдёт о возможности, которую предоставляет сервис Google Voice. В посте трёхгодичной давности уже описывался процесс регистрации аккаунта в GV. При этом можно было принимать звонки на SIP устройства, но для инициализации вызова всё равно приходилось заходить в аккаунт и звонить оттуда, что довольно неудобно. В этом посте я расскажу о том, как полностью подружить Google Voice и SIP.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии23

8 Параметров социальной жизни команды: как измерить неизмеримое

Время на прочтение4 мин
Количество просмотров18K
Около полугода назад мне в руки попала книга Чарли Пелерина How NASA builds teams. В книге описывались социальные проблемы крупных технологических проектов, которые стоили миллионов долларов космической промышленности США.

В книге Чарли я подчерпнула ряд идей об измерении социального контекста проекта. И провела некоторые наблюдения с командами гибкой разработки. Думаю, лучше всего систему NASA 4-D лучше применять для тематической командной ретроспективы.

Однако, независимо от используемого процесса и зрелости команды, описанные ниже 8-мь социальных параметров довольно интересно обсуждать. Разговор о них может дать ряд идей об усилении командного взаимодействия и социальных факторов успеха проекта.

По каждому из пунктов я описала базовое значение “максимума”. Читая описание социальных параметров, попробуйте задаться вопросом: “Насколько хорошо функционирует этот аспект социальной жизни нашей команды?”
Читать дальше →
Всего голосов 36: ↑29 и ↓7+22
Комментарии21

Свободное дистанционное образование

Время на прочтение8 мин
Количество просмотров58K
Свободное дистанционное образование. Дистанционное обучение своими руками, или как создать площадку для вебинаров на основе свободного программного обеспечения.
Здравствуйте, уважаемое сообщество!
Данная статья посвящена вопросу организации дистанционного образования (или, как сейчас модно говорить, e-learning) и предназанчена, в первую очередь, сотрудникам IT-служб ВУЗов и других образовательных учереждений, перед которыми возникла проблема технической поддержки мероприятий в дистанционной форме. Так же статья будет интересна всем, кто так или иначе связан с организацией дистанционного образования.
Аннотация: в статье рассмотрена возможность построения дистанционной образовательной площадки на основе свободного программного обеспечения для занятий с малыми аудиториями (до 50 человек) в режиме вебинара с интерактивными элементами.
Ключевые слова: дистанционное образование, moodle, bigbluebutton


Читать далее...
Всего голосов 48: ↑36 и ↓12+24
Комментарии13

Видео: Мама впервые тестирует Windows 8, Ubuntu 12.10, Windows 1.0, Windows 3.1, Linux Mint Cinnamon 14, OSX 10.2, Elementary OS Luna, Kubuntu, Zorin OS 6.1, MS-DOS 6.22 и Microsoft Bob!

Время на прочтение2 мин
Количество просмотров106K
image

В форумах не утихают споры о том, удобна ли Windows 8 или нет, является ли шагом вперед, или шагом назад. В качестве аргументов защитники windows любят говорить, что «пользователи полагаются на обзоры экспертов-ретроградов», «не пробовали windows 8», «что она почти ничем не отличается от Windows 7» и т.п.

Наверняка сторонники Win8 опять заминусуют карму, но не могу не поделиться. Сегодня случайно наткнулся на видео (местами очень смешное): австралиец попросил свою маму, которая обычно работает в Windows XP, протестировать Ubuntu 12.10 и снял процесс на видео. Оказалось, что они (вернее, его мама) протестировали целый ряд ОС, и даже Microsoft Bob!
  • Windows 8
  • Ubuntu 12.10
  • Windows 1.0 (1985)
  • Windows 3.1 (1992)
  • Linux Mint Cinnamon Edition 14 (2012)
  • MAC OSX 10.2 Jaguar (2002)
  • Elementary OS Luna Beta 1 (2012) — новое
  • Kubuntu 12.10 (2012) — новое
  • Zorin OS 6.1 (2012) — новое
  • Joli OS 1.2 (2011) — новое
  • MS-DOS 6.22 (1994) — новое
  • Microsoft BOB (1995)!

Очень любопытный проект (каждое видео примерно 15 минут):
Читать дальше →
Всего голосов 201: ↑129 и ↓72+57
Комментарии182

oDesk для начинающих

Время на прочтение6 мин
Количество просмотров502K

Зачем?

Вообще, идея этого поста пришла мне в голову в тот самый момент, когда я, не имея до этого за плечами полноценного опыта фриланса, решил всерьез освоить oDesk. Да, если кто не знает, oDesk — это одна из крупнейших в мире фриланс-бирж. Итак, дело было в июле этого года. Официальной работы к тому времени у меня уже полгода как не было, все подработки закончились, новых серьезных заказов не предвиделось, и oDesk представлялся мне весьма перспективным вариантом. Аккаунт, как водится, был зарегистрирован «про запас» еще за год до того, но висел все это время без дела, поэтому начинать нужно было с нуля. При этом я был почти уверен, что руководство, хотя бы самое краткое, на тему, как и с чего начинать, я где-нибудь (уж на Хабре-то точно!) да найду.
Возможно, я плохо искал. Однако все, что мне попалось по теме, сводилось только к тому, что не нужно сразу загибать цены, лучше начинать с небольших. Примерная цитата: «начинайте с $10 в час, со временем, дорастете и до $15». Дорастать до $15, да еще и со временем, мне категорически не хотелось, я был уверен, что можно зарабатывать значительно больше. Да и кроме того, меня волновало огромное количество вопросов. Как заполнять профиль? На какие проекты откликаться? Как составлять cover letter? Как, черт побери, получить этот первый заказ, когда все тебе отказывают?
В тот момент я решил, что если все у меня получится, обязательно напишу то самое руководство для новичков, которого я не нашел.

Читать дальше →
Всего голосов 192: ↑175 и ↓17+158
Комментарии385

Коллекция паттернов поведения для элементов отзывчивого веб-дизайна

Время на прочтение1 мин
Количество просмотров29K
Думаю любому современному дизайнеру или верстальщику рано или поздно в голову приходила мысль «А почему бы на этом проекте не использовать принципы отзывчивого веб-дизайна?». Пожалуй, сложно найти человека, который не слышал о responsive design в наше время, когда сёрфить веб могут с телефона, микроволновки и тапочек. Приступая к работе над подобным проектом, неплохо было бы иметь под рукой примеры возможного поведения лейаута и его отдельных элементов.
Ну же, где паттерны то?!
Всего голосов 51: ↑49 и ↓2+47
Комментарии10

История об аспирантуре в США. Часть 2: Стоимость жизни в США

Время на прочтение7 мин
Количество просмотров96K
Не так давно я выкладывал историю о поступлении в аспирантуру в США, теперь же я расскажу немного о жизни аспиранта и о финансовых вопросах поступления и стоимости жизни в США на примере своих реальных цифр (большая часть цифр указаны для Южной Каролины).
Кому интересно, добро пожаловать под кат
Всего голосов 120: ↑112 и ↓8+104
Комментарии202

Алгоритмы? Не, не знаю

Время на прочтение3 мин
Количество просмотров109K

Введение


В последнее время все чаще встречаю мысли о переходе на специальность разработчика. Будь то менеджер, консультант, военный офицер, физик ядерщик или ландшафтный дизайнер — все захотели стать программистами. Попробуем разобраться, почему это происходит и к чему может привести.
Читать дальше →
Всего голосов 112: ↑73 и ↓39+34
Комментарии67

16 бесплатных курсов Стэнфорда на осенний семестр

Время на прочтение2 мин
Количество просмотров77K
Начался новый учебный год, пора снова садиться за учебники, то есть за экраны компьютеров. Этой осенью Стэнфордский университета расширяет программу учебных курсов, которые бесплатно преподаются через интернет, с последующей выдачей сертификатов. Студентам предлагается 16 онлайновых курсов. Каждый найдёт там себе что-нибудь интересное: криптография, математика, алгоритмы, ИТ-предпринимательство, финансы и т.д. (полный список под катом).

Радует, что Стэнфорд постепенно развивает платформу для дистанционного образования, добавляются новые технологические площадки для вещания — это единственный вуз, который транслирует курсы через несколько площадок, увеличивается количество преподаваемых предметов. На зимний и весенний семестры обещают опять расширить учебную программу.
Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии28

Как гуманитарию стать программистом?

Время на прочтение6 мин
Количество просмотров227K
Я начал писать этот пост два месяца назад еще до появления цикла постов «Хочешь быть программистом, стань им». Я читал комментарии к статьям, переписывал статью. В конечном счете, учтя все замечания от людей, которые убеждены, что для программирования нужны какие-то специальные мозги, мой им ответ: «Для нежелания чего-либо делать, сгодится любое оправдание».

Итак, как гуманитарию научиться программировать?
Ответ. Надо следовать принципу: «Глаза боятся, руки делают».

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

Далее вы найдете сборник полезных советов, которые мне помогли. Пару слов об авторе: я гуманитарий, окончивший исторический факультет.
Читать дальше →
Всего голосов 113: ↑77 и ↓36+41
Комментарии203

«Сложно о простом». Функции-конструкторы — как объекты,(prototype). Объекты,(__proto__). constructor, ={}, как функция-конструктор new Object()

Время на прочтение9 мин
Количество просмотров80K
В прошлый раз мы попытались разобраться со следующими вещами:

  • 1. Не смотря на расхожее мнение «всё в JS является объектами» — это не так, мы выяснили, что из 6 доступных программисту типов данных аж 5 является примитивами и лишь один представляет тип объектов.
  • 2. Про объекты мы узнали, что это такая структура данных, которая содержит в себе пары «ключ-значение». Значением может быть любой из типов данных (и это будет свойство объекта) или функция (и это будет метод объекта).
  • 3. А вот примитивы – это не объекты. Хотя с ними и можно работать как с объектом (и это вызывает заблуждение что примитив – это объект), но…
  • 4. Переменные можно объявить как по простому (литерально) (var a = ‘str’), так и через функцию-конструктор (обёртка)(var a = new String(‘str’)). Во втором случае мы получим уже не примитив, а объект созданный конструктором String(). (что за магический оператор new и что такое функция-конструктор мы узнаем дальше).
  • 5. Узнали, что именно за счёт создания обёртки над примитивом (new String(‘str’)) c ним можно работать как с объектом. Именно эту обёртку создаёт интерпретатор вокруг примитива, когда мы пытаемся работать с ним как с объектом, но после выполнения операции она разрушается (поэтому примитив никогда не сможет запомнить свойство, которое мы ему присвоим a.test = ‘test’- свойство test исчезнет с обёрткой).
  • 6. Узнали, что у объектов есть метод toString() который возвращает строковое представление объекта (для типа number valueOf() – вернёт числовое значение).
  • 7. Поняли, что при выполнении операций конкатенации или математических операциях примитивы могут переопределить свой тип в нужный. Для этого они используют функции-обёртки своих типов, но без оператора new (str = String(str)).(в чём разница и как это работает, поговорим дальше)
  • 8. И наконец, узнали, что typeof берёт значения из жёстко зафиксированной таблицы (вот откуда ещё одно заблуждение, основанное на typeof null //object).

Читать дальше →
Всего голосов 57: ↑40 и ↓17+23
Комментарии39

Разворачиваем локальный сервер на Windows

Время на прочтение8 мин
Количество просмотров361K

Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.

На установку системы и всех необходимых программ ушло не более двух часов, но затем наступил самый интересный момент: мне нужно было развернуть рабочее окружение, а именно — GIT + локальный сервер (Apache, MySQL, PHP, nginx, memcached, mongodb). Помятуя об опыте предыдущих установок, на этот раз я решила весь процесс задокументировать и сохранить для потомков.

Читать дальше →
Всего голосов 146: ↑96 и ↓50+46
Комментарии137

Главный принцип хорошего кода

Время на прочтение9 мин
Количество просмотров86K
За двадцать лет разнообразного программирования я сформулировал, убежден, главнейший принцип хорошего кода. Опираясь на него, мне и моим коллегам удавалось приводить в порядок самый страшный код, объединять в команде малосовместимых программистов и годами поддерживать системы без лишнего нытья.

Прочтение этой статьи: 15 минут
Осмысление методики: 10 минут
Ощутимые результаты: 30 минут

Итак,
Всего голосов 168: ↑120 и ↓48+72
Комментарии174

Кодекс Чести

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

Кодекс и долг

  • Моя работа — отражение моего мастерства. Лично я отождествляю это с качеством.
  • Если я возложил на себя обязательства касательно проекта и сроков сдачи, то я сделаю всё возможное, чтобы сдержать своё слово.
  • Это дело чести — выполнять свои обещания. Я готов идти на личные жертвы, чтобы сдержать свое слово.
  • Обязательства и жертвы сугубо добровольны и руководствуются лишь внутренней мотивацией. Дополнительное внешнее давление рассматривается как нарушение Кодекса: я уже выполняю свою работу настолько хорошо, насколько могу.


Общение

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

Читать дальше →
Всего голосов 76: ↑66 и ↓10+56
Комментарии21

Введение во фреймворки (Часть 2)

Время на прочтение6 мин
Количество просмотров12K
Тестирование
Часть 1

Второе поколение фреймворков

Это поколение является промежуточным уровнем фреймворков автоматизированного тестирования, среди них могут быть и достаточно простые фреймворки, а могут быть и достаточно хорошо спроектированные. Подобные фреймворки должны рассматриваться в случае, когда поддержка автотестов является важным фактором. Хорошее понимание этого поколения фреймворков является важным, так как на концепциях фреймворков этого уровня основываются фреймворки третьего поколения.
К фреймворкам второго поколения относятся фреймворки ориентированные на данных и фреймворки использующие функциональную декомпозицию. Большинство фреймворков этого уровня являются гибридами и используют оба подхода, но так как возможно использование только одного из них, то эти подходы будут рассмотрены независимо друг от друга.
Читать дальше →
Всего голосов 8: ↑4 и ↓40
Комментарии3

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность