Pull to refresh
37
0
Дмитрий @cheshka

User

Send message

Разрушение Silo через адаптацию VeriSM™ подхода

Reading time6 min
Views2.8K

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


image

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments11

Публикация на стене Вконтакте средствами php

Reading time5 min
Views139K
Получив задачу создать автоматическую публикацию материалов сайта на стене нашей страницы Вконтакте, я обнаружил, что рецептов по этой, казалось бы, актуальной теме относительно мало.

В действительности всё оказалось довольно просто, и чтение документации по API часто помогает сэкономить время.

Читать дальше →
Total votes 84: ↑60 and ↓24+36
Comments59

Оптимизация Javascript с помощью Google Closure Compiler

Reading time1 min
Views47K
image
Google открыла исходные коды нескольких инструментов, которые использовались их сотрудниками при разработке таких проектов как Google Docs, Google Maps и GMail.

В числе этих инструментов имеется достаточно интересная штука, называемая Google Closure Compiler. Данная утилита минимизирует и оптимизирует javascript-код, за счет чего он начинает работать и загружаться быстрее.
Читать дальше →
Total votes 89: ↑85 and ↓4+81
Comments67

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

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

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

Исключения в Java, Часть II (checked/unchecked)

Reading time9 min
Views285K
Это вторая часть статьи (первая часть — try-catch-finally), посвященной такому языковому механизму Java как исключения. Она имеет вводный характер и рассчитана на начинающих разработчиков или тех, кто только приступает к изучению языка.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

1. Магия checked/unchecked
2. Пессимистичный механизм
3. throws с непроверяемым (unckecked) исключением
4. Множественные исключения
5. Или catch, или throws
6. Поведение компилятора/JVM
7. Overriding и throws
8. Передача свойства по наследству


1. «Магия» checked/unchecked



Механизм исключительных ситуация в Java связан с двумя элементами «магии», т.е. поведения, которое никак не отражено в исходном коде:
1. «Магию» java.lang.Throwable — в throw, catch и throws могут стоять исключительно Throwable или его наследники (мы уже разбирали в предыдущей лекции). Это «право» находиться в throw, catch и throws никак не отражено в исходном коде.
2. Все исключительные ситуации делятся на «проверяемые» (checked) и «непроверяемые» (unchecked). Это свойство присуще «корневищу» (Throwable, Error, Exception, RuntimeException) и передается по наследству. Никак не видимо в исходном коде класса исключения.
Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments12

Доступность веб-проектов — спокойной ночи, ProductOwner

Reading time7 min
Views1.5K
Вы — ProductOwner и отвечаете за группу веб-проектов. Когда сайты висят, недоступны или Клиентам выводится отладочная информация типа «Exception in object COrderController constructor… » — вам начинают звонить на мобильный, писать в твиттер и т.п.:
  • топ-менеджер (или генеральный)
  • коллеги, некоторые злорадствуя
  • наши уважаемые Клиенты

Еще веселее, когда вас дергают… вечером за ужином, в иное время во время исполнения супружеских обязанностей, в отпуске :-)
Разберем популярные кейсы, ключевые принципы обеспечения доступности веб-проектов и попытаемся выстроить чеклист «Безмятежного отпуска».
Читать дальше →
Total votes 76: ↑71 and ↓5+66
Comments34

Авторизация через ВКонтакте, Mail.ru и другие для самых начинающих — 1

Reading time4 min
Views48K
На хабре и других ресурсах есть туториалы, однако в каждом упущен какой-нибудь незначительный момент, вопросы по которому можно видеть на различных форумах. Так как недавно столкнулся с задачей подружить один сайт с Контактиком и Майл.ру, то решил, пока свежа память, сделать свое небольшое руководство с блэкджеком так сказать, используя родные виджеты этих социальных сетей.
Читать дальше →
Total votes 111: ↑100 and ↓11+89
Comments45

Быстрое обновление проектов на клиентских серверах через FTP

Reading time2 min
Views4.4K

Задача


Часто приходится сталкиваться с долгосрочными проектами, которые требуют разработки на тестовом сервере под Linux, и после проверки клиентом — обновления кода на его сервере. Разумеется, имеет смысл использовать систему контроля версий (мы используем SVN), и когда есть доступ к клиентскому серверу через SSH — достаточно сделать например команду svn update или svn checkout.

Проблема


Однако, когда к клиентскому серверу есть доступ только по FTP — приходится заливать обновления вручную, используя одну из альтернатив:
— копировать по FTP все файлы проекта, чтобы ничего не упустить
— составлять список файлов которые были изменены с момента предыдущего релиза, и заливать только их.

Решение


Хочу поделиться решением, которое позволяет автоматизировать этот процесс, и производить обновление проекта на клиентском сервере простым запуском скрипта на вашем dev-сервере. Для этого предлагается написать простенький Shell скрипт, который будет выполнять следующее:
1) Экспортировать код проекта из системы контроля версий
2) Обновлять код проекта на клиентском сервере
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments4

Инструменты командной строки для веб-разработчика

Reading time3 min
Views39K
Жизнь веб-разработчика омрачена сложностями. Особенно неприятно, когда источник этих сложностей неизвестен. То ли это проблема с отправкой запроса, то ли с ответом, то ли со сторонней библиотекой, то ли внешний API глючит? Существует куча различных прилад, способных упростить нам жизнь. Вот некоторые инструменты командной строки, которые лично я считаю бесценными.
Читать дальше →
Total votes 227: ↑217 and ↓10+207
Comments30

CBS или упрощенный вид стилизирования и написания скриптов в ваших проектах

Reading time4 min
Views1.2K

Вступление



Привет хабровчане,

Вашему вниманию хотел бы предоставить небольшую, но полезную функцию которая:
  • Сделает работу верстальщика немного проще и чище
  • Упростит выборку элементов на странице через популярные платформы, аля jQuery


Смысл функции в том, что бы вместе с загрузкой страницы/после неё определить важные параметры клиента, такие как:
Браузер, версия браузера, О.С, движек браузера и.т.п
И разместить их в html тэг вашей страницы.

Дальше — больше. Читаем?

Читать дальше →
Total votes 50: ↑39 and ↓11+28
Comments34

Быстрое создание нагрузочных тестов на JMeter для web-сайтов

Reading time5 min
Views149K
imageДля любого программного приложения, предназначенного для массового обслуживания пользователей, необходимо проводить нагрузочное тестирование на предмет его надежности и отказоустойчивости. А так как любой web-сайт — это по своей сути система массового обслуживания, то проверка его на отказоустойчивость всегда является неотъемлемой частью разработки. Существуют различные решения для проведения нагрузочного тестирования веб-приложений. Я не буду сейчас описывать их подробно, про некоторые из них есть упоминания здесь.

В этой статье я хочу поделиться своим опытом использования такого средства, как Apache JMeter. После того как мною были перепробовано с десяток различных подобных инструментом, в итоге я остановился именно на JMeter, так как его возможности с лихвой охватывали мои цели и задачи. И при этом данное программное средство весьма быстрое и легковесное.

Для тех кто ни разу не использовал JMeter, рекомендую для начала почитать базовые обзоры, например, Простой нагрузочный тест с Apache JMeter. Когда я первый раз запустил данную программу, первая мысль была разобраться во всем методом «тыка», но как выяснилось это вообще нереально, и метод «тыка» неприменим к JMeter. Поэтому если хотите его использовать, то сразу открывайте мануал, поверьте, вам придется заглядывать туда очень часто, пока полностью не разберетесь, что и как. Я же здесь сейчас опишу самое очевидное и важное, а именно: как собственно создавать нагрузочные тесты. Если бы я в свое время сразу нашел подобную статью, то сэкономил бы без малого день на изучении этой софтины.
Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments35

Простой нагрузочный тест с Apache JMeter

Reading time7 min
Views285K
По моим наблюдениям, разработчики довольно редко делают нагрузочное тестирование сайтов и веб-приложений. И бывает так, что выставят проект в Интернет, а тут вдруг посетители начнут ходить (хабраэффект, к примеру, случился), и сайт в самый подходящий момент ложится или начинает не по-детски тормозить.

Почему бы не избежать этих неприятностей, прогнав нагрузочный тест?

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

Под катом рассказываю, как с нуля организовать незамысловатый нагрузочный тест сайта при помощи Apache JMeter.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments14

Шортики — короткие и смешные, или как мы готовили сайт к Хабраэффекту

Reading time7 min
Views3.1K


Намба 0: Вступление

Однажды, задумчиво листая башорг, я вдруг понял, что большинство цитат довольно длинные и очень часто их просто лень читать. В наш век всеобщей спешки — на это уходит много времени. Таким образом родился новый формат: Шортики (от английского слова Short — короткий). Шортик — это короткая (из одного-двух предложений) шутка, жестко ограниченная 255 символами (чтобы не повадно было).

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

P.S. Учитывая то, что это не совсем стартап (проект пока некоммерческий, да и «стартап» — слишком громкое слово для моей поделки), приобретенная за годы пребывания на сайте хабрасовесть не позволила мне написать нетехническую статью. Поэтому, под катом вас ждет занимательная история о том, как мы готовили Шортики к Хабраэффекту.

Читать дальше →
Total votes 230: ↑193 and ↓37+156
Comments205

Изображения без width/height

Reading time1 min
Views8.5K
Хорошим тоном считается всегда указывать для изображений, которые мы используем на странице, их длину и ширину. Часто такие картинки, если мы не укажем их размеры, могут во время загрузки раскачивать нашу верстку.
Чтобы во время разработки было более наглядно, где мы пропустили картинки без указания размеров, ребята из 37Signals предложили небольшой, но чрезвычайно полезный сниппет:

img:not([width]):not([height]) {
  border: 2px solid red !important;
}

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

Оригинал статьи
Total votes 122: ↑101 and ↓21+80
Comments44

Нечёткий поиск на клиенте и Soundex

Reading time7 min
Views8.6K
Soundex — один из алгоритмов сравнения двух строк по их звучанию. Был разработан чуть менее 100 лет назад Робертом Расселом и Маргарет Оделл. Активно используется в США при диктовке фамилий.

Я давно интересовался применением этого алгоритма и нашёл ему место для фильтрации данных на клиенте, а точнее, для поиска отеля по названию в проекте Островок.ru.

Задача

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

Решение, проблемы и готовый скрипт
Total votes 72: ↑70 and ↓2+68
Comments44

Замыкания и объекты JavaScript. Переизобретаем интерпретатор

Reading time12 min
Views25K
Обычно концепции или парадигмы программирования объясняют либо описательно — «разжёвывая» новые идеи простыми словами, либо метафорически — уподобляя их хорошо знакомым аудитории предметам и понятиям. Но ни первый, ни второй способ не дает такого точного и полного представления о предмете, как взгляд с точки зрения низкоуровневой реализации.

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

JavaScript, как никакой другой язык, нуждается в именно таком объяснении. Функциональная природа, скрытая за Си-подобным синтаксисом, и непривычная прототипная модель наследования поначалу сильно сбивают с толку. Давайте мысленно понизим уровень JavaScript до простого процедурного, наподобие Си. Отталкиваясь от этого «недоязыка», переизобретем функциональное и объектно-ориентированное программирование.
Читать дальше →
Total votes 114: ↑113 and ↓1+112
Comments30

Sugar — подслащённый Javascript

Reading time6 min
Views5.3K
Что же такое Sugar?
Это javascript-библиотека для работы со встроенными объектами javascript, которая:
  • расширяет встроенные объекты языка, добавляя полезные и интуитивно-понятные методы;
  • добавляет кросс-браузерную функциональность, где она сломана или ее нет;
  • полностью покрыта тестами;
  • легко взаимодействует с другими фреймоворками и сторонним кодом;
  • проста в понимании и использовании

В качестве примера использования, автор приводит вот такой код:
getLatestTweets(function(t) {
    var users = t.map('user').unique();
    var total = users.sum('statuses_count').format();
    var top = users.max('followers_count').first();
    var count = top.followers_count.format();
    var since = Date.create(top.created_at);
    return users.length + ' users with a total of ' + total + ' tweets.\n' +
    top.screen_name + ' is the top with ' + count + ' followers\n' +
    'and started tweeting ' + since.relative() + '.';
});


Не правда ли, код читается почти как английский текст.
Самые нетерпеливые могут изучить предоставляемые функции по этой ссылке, а остальных ждёт краткое описание под катом.
Читать дальше →
Total votes 78: ↑66 and ↓12+54
Comments30

Виджет выпадающих списков Chosen: реализуем динамическое добавление позиций

Reading time8 min
Views18K
По мотивам топика Chosen: сделай выпадающие списки более дружественными.

Довольно симпатичный виджет, иногда даже может быть полезен (допустим когда есть определенные требования к дизайну). Но в данный момент виджет не позволят добавлять позиции динамически, что возмутило товарища alexsrdk, да и меня тоже :) Сейчас попробуем это дело исправить.
Читать дальше →
Total votes 69: ↑67 and ↓2+65
Comments16

ООП-обертка для PHP lib_curl

Reading time2 min
Views4.9K
Пару лет назад я сделал небольшой персональный проект под названием «Аггрегатор комиксов». Суть проекта в том, что есть куча сайтов с комиксами, на которых нет RSS-лент. И мне было откровенно лень ходить по этим сайтам вручную и проверять апдейты.

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

Читать дальше →
Total votes 52: ↑37 and ↓15+22
Comments108

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity