Как стать автором
Обновить
39
0
MagistrAVSH Cats'A @Magistr_AVSH

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

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

Пространства с иным числом Пи

Время на прочтение4 мин
Количество просмотров118K
Недавно на Хабре в одной статье упомянули про вопрос «Что было бы с миром, если бы число Пи равнялось 4?» Я решил слегка поразмышлять на эту тему, используя некоторые (пусть и не самые обширные) знания в соответствующих областях математики. Кому интересно – прошу под кат.


Читать дальше →
Всего голосов 133: ↑103 и ↓30+73
Комментарии164

Целимся из пушки

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

В статье описан простой алгоритм наведения пушки, когда оси вращения не пересекаются с осью ствола. Быстро найти готовый не получилось – пришлось вспоминать школьные времена. Ну а раз вспомнил – грех не поделиться с остальными. А кто-то где-то, сэкономив время, использует его на создание еще чего-то полезного…

Результат приведенных расчетов используется в аркадной игре. За месяц промахов не было. Если вы разрабатываете симулятор, скорее всего, понадобится что-то более изощренное.
Читать дальше →
Всего голосов 51: ↑42 и ↓9+33
Комментарии20

Усиливаем контроль типов: где в типичном C#-проекте присутствует непрошеный элемент слабой типизации?

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

Проблема


Мы привыкли говорить о языках вроде C# как строго и статически типизированных. Это, конечно, правда, и во многих случаях тип, указываемый нами для некоторой языковой сущности хорошо выражает наше представление о ее типе. Но есть широко распространенные примеры, когда мы по привычке («и все так делают») миримся с не совсем верным выражением «желаемого типа» в «объявленном типе». Самый яркий — ссылочные типы, безальтернативно оснащенные значением «null».
В моем текущем проекте за год активной разработки не было ни одного NullReferenceException. Могу не без оснований полагать, что это следствие применения описанных ниже техник.

Рассмотрим фрагмент кода:

public interface IUserRepo 
{
	User Get(int id);
	User Find(int id);
}

Этот интерфейс требует дополнительного комментария: «Get возвращает всегда не null, но кидает Exception в случае ненахождения объекта; а Find, не найдя, возвращает null». «Желаемые», подразумеваемые автором типы возврата у этих методов разные: «Обязательно User» и «Может быть, User». А «объявленный» тип — один и тот же. Если язык не заставляет нас явно выражать эту разницу, то это не означает, что мы не можем и не должны делать это по собственной инициативе.
Maybe в C#: какие есть варианты
Всего голосов 37: ↑32 и ↓5+27
Комментарии63

Рабочие будни программиста: ожидания и реальность

Время на прочтение3 мин
Количество просмотров82K
Продолжаем нашу серию статей по мотивам опросов: на этот раз мы решили измерить расхождение между тем, как представляют рабочий день программиста студенты-технари, и тем, как все происходит на самом деле. Студенты МГТУ им. Баумана, которые учатся в Технопарке, снова согласились ответить на наши вопросы.

Для этого мы провели небольшое исследование, в ходе которого ожидаемо выяснилось, что не все представления о «сферическом рабочем дне в вакууме» совпадают с реальностью. Студенты готовы программировать по 790 часов в год при условии, что половину рабочего времени будут проводить в социальных сетях.

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

Вопрос программистам: Представьте себе свой типичный рабочий день. Какой процент времени в среднем занимает каждая из перечисленных активностей?

  • Обдумываю задачу, ищу пути решения
  • Изучаю информацию, читаю маны
  • Пишу код
  • Тестирую, ищу баги
  • Участвую во встречах, планерках, брейнштормах, провожу собеседования
  • Читаю Хабрахабр, Роем и другое полезное в интернете
  • Читаю / пишу письма, ставлю / читаю таски в трекере
  • Сижу в социальных сетях
  • Общаюсь с коллегами по не рабочим вопросам
  • Ем, пью, сплю


Далее для сравнения мы собрали ответы студентов Технопарка.
Читать дальше →
Всего голосов 91: ↑72 и ↓19+53
Комментарии71

Хотите распределить элементы, привязавшись к их количеству, на одних стилях? Да запросто

Время на прочтение3 мин
Количество просмотров24K
Альтернативное название статьи – «почти :child-count(n)». Потому что именно так оно все и работает. На голом CSS и без каких-либо дата-атрибутов или чего-либо еще в верстке.

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

Конечно же, если у вас четыре элемента, а третий вы сделали во всю ширину – последний будет свешиваться в конце. Поэтому нужно применять такую красивую и бесполезную вещь только в том случае, если количество элементов кратно трем. А если их нечетное число(но не кратное трем) — нужно делать, например, последний элемент во всю шинину.
Вот так, например:



Как же это сделать?
Всего голосов 51: ↑43 и ↓8+35
Комментарии19

Apogee: человек-оркестр и игровой онлайн-издатель 1987 года

Время на прочтение7 мин
Количество просмотров25K
В конце 1980-ых в Техасе молодой человек двадцати с небольшим лет от роду по имени Скотт Миллер создал бизнес-модель, которая изменила способ покупки и продажи цифровых продуктов по всему миру. Сам Миллер называл свой шедевр «Apogee model» — «моделью апогея», всем остальным же она сегодня известна под названием «shareware», или «условно-бесплатное ПО». Эта модель сделала цифровые продажи через интернет колоссально прибыльными, а самого Миллера — миллионером. Модели и ее автору предстояло произвести революцию относительно способа, которым используется интернет — причем еще до того, как большая часть мира узнала об его существовании.

Нерды на полную ставку


imageВ юности Скотт Миллер был лентяем.

В старших классах школы в начале 1980-ых он, замкнутый подросток, спасался от жаркого солнца Техаса, скрываясь в кампусе компьютерной лаборатории, проводя все свое время за программированием длинных текстовых квестов-приключений. Здесь он повстречал Джорджа Бруссарда — другого подростка, который на тот момент выделялся лишь своей любовью к постоянному ношению шортов. Как часто случалось в то время, ребят сплотило между собой дружное восхищение местным компьютером Apple II.
Читать дальше →
Всего голосов 95: ↑92 и ↓3+89
Комментарии10

Замечательное выступление настоящего программиста

Время на прочтение1 мин
Количество просмотров150K
Не нашёл на хабре — спешу поделиться. Восхитительное выступление Александра Соловьёва ingspree на конференции JavaScript Frameworks Day 2013. На видео ниже просто набор отрывков из него, желающим посмотреть полностью — сюда.

Всего голосов 324: ↑272 и ↓52+220
Комментарии133

Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7

Время на прочтение6 мин
Количество просмотров232K
В один прекрасный (или печальный, кому как) день мне надоело, что у меня периодически заканчивается место на ноутбуке. Да, я в курсе, что жёсткие диски сейчас дешевы, но это для меня не выход, потому что:
  • У меня SSD, а он всё-таки подороже будет, чем обычные HDD (объём моего текущего SSD — 120 гигов)
  • Ноутбук рабочий, соответственно данные на нём тоже, должны быть шифрованы, всё такое, поэтому самопальный и не утверждённое работодателем носитель втыкать не стоит
  • Я жадный :)

Этот топик, пожалуй, предназначен и может быть полезен тем людям, кого волнует свободное место на системном диске, обычные средства очистки уже испробованы, а хочется выжать ещё чуть-чуть (как в старом анекдоте — первая попавшаяся в гугле ссылка на анекдот, если сайт плохой — пардон).
Если заинтересовало - милости просим
Всего голосов 66: ↑60 и ↓6+54
Комментарии85

Повесть о настоящем Интернете

Время на прочтение13 мин
Количество просмотров171K
Abstract: Рассказ про устройство Интернета, как «сети сетей» в виде текста для чтения, без двоичной системы счисления и нюансов BGP. Большая часть расказа будет не про процесс общения ноутбука с точкой доступа, а о том, что происходит после того, как данные пройдут «шлюз по умолчанию». Предупреждаю, букв много.

Вступление


Маленький провокативный вброс: ни один из читателей этой статьи к Интернету не подключен. Все подключены к сети своего провайдера, и не более. Подключение к Интернету дорогое, его сложно делать, вам потребуется очень крутое оборудование, несколько договоров с несколькими операторами связи и квалифицированные сотрудники. Простому домашнему пользователю это никак и никогда не светит. Не говоря уже о том, что в Интернете может быть не больше 4 миллиардов подключившихся (а до недавнего времени было даже «не более 65536») [1]. Даже если весь Интернет перейдёт на ipv6, это число не поменяется.

Вот число подключившихся к Интернету [2]:

По оси Y — число в штуках. Штуках, штуках. И вас в этом числе не посчитали.

Почему?

Дело в том, что Internet — это, если переводить буквально, «межсетье». Сеть Сетей. И участниками Интернета являются не пользователи (их компьютеры, планшеты, микроволновки с wifi и т.д.), а сети. Сети и только сети участвуют в работе Интернета. Интернет — это то, что связывает разные сети между друг другом.
Читать дальше →
Всего голосов 179: ↑173 и ↓6+167
Комментарии52

Что бы Нотч ни писал, все равно получается Minecraft

Время на прочтение1 мин
Количество просмотров12K
Небезызвестный в среде инди разработчиков Маркус Перссон aka Notch, после своего ухода с поста главного разработчика Minecraft, решил принять участие в стартовавшем два дня назад конкурсе Ludum Dare 22 по созданию игр на заданную тему. Темой 22-го конкурса стало «одиночество».



Читать дальше →
Всего голосов 112: ↑107 и ↓5+102
Комментарии42

Несколько интересностей и полезностей для веб-разработчика

Время на прочтение4 мин
Количество просмотров62K
Всем доброго времени суток. Как-то так получилось, за последнее время я увидел много интересных и полезных инструментов/библиотек/событий, которыми я хотел поделиться на Хабре. Все эти темы по отдельности, на мой взгляд, не заслуживали целой статьи. Но каждая из них достойна внимания и может кому нибудь пригодиться. В итоге получился небольшой дайджест:

Prepros



Великолепное приложение препроцессор для CSS, JS. Компилирует файлы следующих типов: LESS, Sass, SCSS, Stylus, Jade, Slim, Coffeescript, LiveScript, Haml. Минифицирует JS на лету, при каждом изменении файла. Оптимизирует изображения. Доступен для Windows и Mac, а также как расширение для Chrome. Плюс ко всему создает HTTP сервер, для тестирования сайта на разный устройствах. Бесплатная замена CodeKit'у и Ghostlab'у вместе взятых, что в сумме позволит Вам сэкономить $75.

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

Использование Drag&Drop в HTML 5

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


Долгое время для создания Drag&Drop функционала использовались JavaScript-функции, однако браузеры не всегда корректно могли отображать результат. В HTML 5 есть способ грамотной поддержки Drag&Drop, с небольшим применением JavaScript. В этой статье подробно разобран наглядный пример применения Drag&Drop в HTML 5.

Поддержка браузерами


На сегодняшний день функция Drag&Drop в HTML 5 корректно обрабатывается всеми современными настольными браузерами, (частично даже IE 5.5!), однако мобильные такую возможность не поддерживают. Подробнее данные в таблице caniuse.com.
Читать дальше →
Всего голосов 48: ↑38 и ↓10+28
Комментарии11

Crossfilter.js, dc.js и D3.js для визуализации Данных

Время на прочтение4 мин
Количество просмотров35K
Приветствую ценителей красивой и функциональной визуализации данных! Предлагаю вашему вниманию небольшой обзор нескольких JavaScript библиотек, которые вкупе с D3.js позволят создать интерактивную визуализацию многомерных данных с возможностью применения фильтрации «на лету».


Заинтересовались, тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 54: ↑52 и ↓2+50
Комментарии15

Чем тестировать адаптивный дизайн?

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

Хватит менять размер окна браузера, хватит его насиловать! Готов спорить, вы не раз слышали это. Хорошо, возможно и не слышали. Но если вы профессионально занимаетесь разработкой адаптивных сайтов, вы понимаете о чем я: любое изменение DOM или правка CSS, и вы снова начинаете тянуть край браузера вперед, назад, тестируя изменения и просматривая ничего ли не сломалось.

Целью ваших движений является имитация экранов различных устройств.

В корпоративной среде зачастую, у вас есть множество гаджетов предоставленных компанией для теста. На моей работе в моем распоряжении есть iPad, iPod, другие планшеты, ноутбуки, а также настольные мониторы. Если у вас нет такой роскоши, приходится использовать то, что под рукой.

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

Для тестирования я выбрал реально адаптивный сайт PajamasOnYourFeet.com, сайт построено на основе HTML5 шаблона, бесплатно предоставленным EGrappler.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии33

Абсолютное горизонтальное и вертикальное центрирование

Время на прочтение5 мин
Количество просмотров313K
Сколько уже было сломано копий о задачу выравнивания элементов на странице. Предлагаю вашему вниманию перевод отличной статьи с решением этой проблемы от Стефана Шоу (Stephen Shaw) для Smashing Magazine — Absolute Horizontal And Vertical Centering In CSS.

Все мы знали о margin: 0 auto; для горизонтального центрирования, но margin: auto; не работало для вертикального. Это можно легко исправить, просто задав высоту и применив следующие стили:

.Absolute-Center {
  margin: auto;
  position: absolute;
  top: 0; left: 0; bottom: 0; right: 0;
}

Я не первый, кто предложил это решение, однако такой подход редко применяется при вертикальном выравнивании. В комментариях к статье How to Center Anything With CSS Simon ссылается на пример jsFiddle, где приводится отличное решение для вертикального центрирования. Вот еще несколько источников на эту тему.

Рассмотрим способ поближе.
Читать дальше →
Всего голосов 112: ↑106 и ↓6+100
Комментарии10

FireBug* Console API

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

Введение


Firebug добавляет глобальную переменную с именем «console» к каждой веб-странице, загруженной в Firefox. Этот объект содержит много методов, которые возволят Вам писать на консоль Firebug и показывать информацию, проходящую через скрипты.
firebug.ru

К нашему счастью, не только firebug обладает данным функционалом:
  • Chrome Javascript console — практически точный аналог
  • Opera Dragonfly console — функционал реализован частично
  • Firefox Web console — функционал реализован частично

Эта статья — мануал по Console API.
Примеры даны из chromeChrome 28.0.1500.72 m, firebugFirebug 1.11.3, firefoxFirefox 22.0, operaOpera 12.15 (версия до ухода с presto)
Читать дальше →
Всего голосов 63: ↑63 и ↓0+63
Комментарии23

Floobits: удобное удаленное парное программирование

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

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

Floobits позволяет использовать свой любимый редактор для совместной работы над кодом в реальном времени — сейчас поддерживаются только Sublime Text, Vim и Emacs; кроме того, есть и традиционный для подобных сервисов веб-редактор кода, работающий прямо в браузере.

Поскольку обойтись только редактором было сложно, со временем выяснилось, что парная разработка — это не только распространение кода, но и «расшаривание» терминалов (для этого был разработан Flootty), а еще и реал-тайм обновление кода на тестовом сервере (для этого был разработан несложный diff-shipper). Кроме того, для голосового чата и обмена видео в веб-редактор была добавлена поддержка Google+ Hangouts
Читать дальше →
Всего голосов 66: ↑62 и ↓4+58
Комментарии26

Каверзные кватернионы

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


Отгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?

Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.

Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Что же такое кватернион?
Всего голосов 110: ↑102 и ↓8+94
Комментарии48

Кручу-верчу, запутать хочу: углы Эйлера и Gimbal lock

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


Выставите любой палец левой руки вперед. Давайте, не стесняйтесь, никто не будет над вами смеяться. Это нужно для важного эксперимента. Выставили? Теперь представьте что вы — это ваш палец (ну и бред). Повернитесь под прямым углом направо, затем наверх, и наконец налево. Где вы оказались? Правильно, в том же месте, но уже на спине.

С некоторой натяжкой именно так работает вращение с помощью углов Эйлера. Немного непредсказуемо и неудобно, не правда ли? Углы Эйлера имеют несколько недостатков, но есть одно особенно нехорошее свойство из-за которого вы не захотите с ними связываться. Его имя — Gimbal lock.

В русском языке gimbal lock называют по-разному: шарнирный замок, блокировка осей, складывание рамок. К сожалению, по запросам в поисковике с такими ключевыми словами выдаётся много мусора, а статья в Википедии оставляет желать лучшего, поэтому я сам расскажу вам об этом феномене и предложу как с ним бороться.

Внимание! Заходя под кат вы подвергаетесь риску поломать голову.
Ха! Я ничего не боюсь! Где этот gimbal lock?
Всего голосов 67: ↑60 и ↓7+53
Комментарии37

Псевдо 3D: Анимация вращения планет и других шароподобных объектов

Время на прочтение2 мин
Количество просмотров19K
Описание небольшого трюка по анимации вращения планет или других шарообразных штуковин. На написание этой статьи меня натолкнула статья Сфера из двух треугольников (стоит почитать). А сам трюк основан на весьма простом способе создания в Photoshop псевдо-объемной картинки из плоской, который описан под катом.

микродемо


Читать дальше →
Всего голосов 36: ↑23 и ↓13+10
Комментарии26

Информация

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