» Материалы за Ноябрь 2014 года

 

Как выполнить анализ данных, написав всего одну строчку кода

Автор: admin от 30-11-2014, 23:59, посмотрело: 297

Как выполнить анализ данных, написав всего одну строчку кодаВ 14.2 версии мы полностью переписали механизм экспорта данных в форматы MS Excel. Теперь экспорт в Excel работает значительно быстрее и документ, который получается в результате, сохраняет группировку, фильтрацию, сортировку из грида, “живые” саммари на формулах, условное форматирование и много чего еще.

У пользователей появляются новые возможности детального анализа данных из грида в привычном им Excel. Менеджер, бухгалтер или финансовый аналитик теперь могут получить табличные данные из грида в Excel быстро и точно.
Много лет назад я начинал свою карьеру в IT с автоматизации предприятий, используя решения от 1C. У одного из крупных клиентов готовился годовой отчет и что-то не сходилось. Меня попросили написать несколько специальных запросов для локализации расхождений. Думаю, что бухгалтерия могла бы обойтись без приглашения специалиста и сэкономить время и деньги, если бы у них был хороший экспорт в Excel. Разумеется, у этого подхода есть ограничения. Например, объем анализируемых данных может быть слишком большим для Excel.

Благодаря новому экспорту у пользователей появляются новые возможности глубокого анализа и визуализации данных с использованием Excel. К сожалению, я не помню точно, что именно было не так, когда не сходился тот годовой отчет. Поэтому для демонстрации возможностей нового экспорта представим, что имеется приложение, в котором есть данные о продажах товаров магазина за определенный период в виде таблицы. Менеджер хочет узнать, какие товары приносят больший вклад в выручку, те выполнить ABC-анализ. Как вы догадались, в рассматриваемом приложении ABC-анализ не реализован, но зато есть кнопка, по нажатию которой зовется метод view.ExportToXls(..).

Категория: Программирование, Веб-разработка

 

5 самых нужных дополнений к Laravel 4

Автор: admin от 30-11-2014, 23:26, посмотрело: 712

5 самых нужных дополнений к Laravel 4

Когда заходит речь о разработке, мы все пытаемся найти более эффективные и быстрые способы программирования, порой не замечая, что кто-то уже сталкивался с похожей задачей, и изящно её реализовал. Что вы скажете, если мы сократим на 3/4 наш говнокод, всего лишь добавив несколько простых и эффективных зависимостей?

Для тех, кто не знает что такое Laravel 4 — это PHP фреймворк для быстрой разработки. Этот фреймворк с открытым исходным кодом на github, сделан для настоящих ремесленников веб-программирования такими же ремесленниками. Как говорится, «для программистов от программистов». Но статья не о прелестях Laravel, и не о его преимуществах перед другими фреймворками, об этом я с удовольствием расскажу в других статьях. Здесь я расскажу о пяти наиболее значимых и важных дополнений к Laravel 4, которые сэкономят вам драгоценные минуты кодинга.

Приступим...

Категория: Программирование

 

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

Автор: admin от 30-11-2014, 23:10, посмотрело: 598

Доброе время суток.

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

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

И тут возник вопрос: как запретить пользователю удалять/переименовывать папки в sitename.ru? Если будет отсутствовать папка web, то и apache и nginx выдадут предупреждение, но все-равно загрузятся. Но если удалить/переместит папку logs, то и apache и nginx не запустятся из-за ошибки (по мне довольно странное поведение). Папка hostuser полностью принадлежит данному пользователю и его личной группе (hostuser:hostuser), а это означает, что при желании он сможет удалить любую внутреннюю папку/файл, даже если она будет принадлежать суперпользователю. Так как же запретить удаление/перемещение, чтобы пользователь (случайно или специально) не сломать весь хостинг?

Категория: Операционные системы » Linux

 

Обработка ошибок в Swift — меч и магия

Автор: admin от 30-11-2014, 19:11, посмотрело: 467

Если издали видно общую картину, то вблизи можно понять суть. Концепции, которые казались мне далекими и, прямо скажем, странными во время экспериментов с Haskell и Scala, при программировании на Swift становятся ослепительно очевидными решениями для широкого спектра проблем.

Взять вот обработку ошибок. Конкретный пример – деление двух чисел, которое должно вызвать исключение если делитель равен нулю. В Objective C я бы решил проблему так:

NSError *err = nil;
CGFloat result = [NMArithmetic divide:2.5 by:3.0 error:&err];
if (err) {
    NSLog(@"%@", err)
} else {
    [NMArithmetic doSomethingWithResult:result]
}

Со временем это стало казаться самым привычным способом написания кода. Я не замечаю, какие загогулины приходится писать и как косвенно они связаны с тем, что я на самом деле хочу от программы:

Верни мне значение. Если не получится – то дай знать, чтобы ошибку можно было обработать.

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


  • Я говорю на машинном языке – указатели, разыменование.

  • Я должен сам предоставить методу способ, которым он уведомит меня об ошибке.

  • Метод возвращает некий результат даже в случае ошибки.


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

Категория: Программирование

 

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

Автор: admin от 30-11-2014, 16:23, посмотрело: 440

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

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

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

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

Читать далее...

Категория: Программирование, Game Development

 

Поиск на сайте своими руками

Автор: admin от 30-11-2014, 14:22, посмотрело: 459

Поиск на сайте своими руками

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

Категория: Программирование

 

Краткая история хакерства. Рассказ от руководителя информационной безопасности Яндекса

Автор: admin от 30-11-2014, 14:08, посмотрело: 380

Привет! Меня зовут Антон Карпов, в Яндексе я руковожу службой информационной безопасности. Недавно передо мной встала задача рассказать школьникам — студентам Малого ШАДа Яндекса — о профессии специалиста по безопасности. Я решил, что вместо скучной теории, которую и так можно прочитать в учебниках (да и что расскажешь за одну лекцию!), лучше рассказать историю компьютерной безопасности. На основе лекции я подготовил этот короткий рассказ.



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

Категория: Системное администрирование, Информационная безопасность, Яндекс

 

Дайджест интересных материалов для мобильного разработчика #81 (24-30 ноября)

Автор: admin от 30-11-2014, 11:59, посмотрело: 315

Закончилась очередная неделя и в России ожидаемо подорожали iУстройства, снова с нами сборник всех издательств, вышла новая версия Unity, внутриигровые покупки обложили НДС. Еще больше новостей – в очередном дайджесте.

Дайджест интересных материалов для мобильного разработчика #81 (24-30 ноября)

Категория: Веб-разработка, Game Development, Android, Windows, iOS

 

Всемирный день информационной безопасности

Автор: admin от 30-11-2014, 06:46, посмотрело: 565

Всемирный день информационной безопасности


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

Если бы не вы, информационные сети давно бы захлебнулись в эпидемиях всевозможной цифровой заразы. Вы ежедневно оберегаете мирное небо над головой наши компьютеры и всевозможные гаджеты от несметного числа троянов и вирусов. Благодаря вашим трудам, всемирная гидра сетевого криминала не может развернуться во всю ширь. Хотя и наворотила эта рептилия немало. Чем запомнился нам год, прошедший с прошлого Дня информационной безопасности? Увы, но за это время нам пришлось столкнуться с некоторыми очень серьёзными проблемами. Да и вообще список событий оказался весьма впечатляющий. Вот лишь некоторые из них.

Категория: Информационная безопасность

 

Выразительный JavaScript: Рисование на холсте

Автор: admin от 29-11-2014, 23:49, посмотрело: 796

Содержание



  • Введение

  • Величины, типы и операторы

  • Структура программ

  • Функции

  • Структуры данных: объекты и массивы

  • Функции высшего порядка

  • Тайная жизнь объектов

  • Проект: электронная жизнь

  • Поиск и обработка ошибок

  • Регулярные выражения

  • Модули

  • Проект: язык программирования

  • javascript и браузер

  • Document Object Model

  • Обработка событий

  • Проект: игра-платформер

  • Рисование на холсте

  • HTTP

  • Формы и поля ввода

  • Проект: Paint

  • Node.js

  • Проект: веб-сайт по обмену умениями

  • Песочница для кода



Рисование — это обман.
М.К.Эшер


Браузеры позволяют нам рисовать графику разными способами. Проще всего использовать стили для расположения и расцветки стандартных элементов DOM. Так можно добиться многого, как показал пример игры из предыдущей главы. Добавляя частично прозрачные картинки узлам, мы можем придать им любой нужный вид. Возможно даже поворачивать или искажать узлы через стиль transform.

Но такое использование DOM – не то, для чего он создавался. Некоторые задачи, типа рисования линии между двумя произвольными точками, крайне неудобно выполнять при помощи обычных элементов HTML.

Есть две альтернативы. Первая – SVG, масштабируемая векторная графика, также основанная на DOM, но без участия HTML. SVG – диалект для описания документов, который концентрируется на формах, а не тексте. SVG можно встроить в HTML, или включить через тег .

Вторая альтернатива – холст (canvas). Холст – это один элемент DOM, в котором находится картинка. Он предоставляет API для рисования форм на том месте, которое занимает элемент. Разница между холстом и SVG в том, что в SVG хранится начальное описание форм – их можно в любой момент сдвигать или менять размер. Холст же преобразовывает формы в пиксели (цветные точки растра), как только нарисует их, и не запоминает, что эти пиксели из себя представляют. Единственным способом сдвинуть форма на холсте является очистить холст (или ту часть, которая окружает форму) и перерисовать её на другом месте.

Категория: Программирование

 
Назад Вперед