Search
Write a publication
Pull to refresh
0
@braindamagedread⁠-⁠only

User

Send message

Проблемы удаленной работы дома и пути их решения

Reading time6 min
Views218K
Стоит мне где-то упомянуть, что работаю дома, как в ответ зачастую слышатся завистливо-шутливые реплики в духе «хорошо тебе, сидишь дома, ничего не делаешь и деньги получаешь». В зависимости от настроения и собеседника, приходится либо отшучиваться, либо в сотый раз пояснять, что работаю я не меньше офисных собратьев и что проблем в удаленной работе хватает. В данной статье, как раз, хотелось бы коснуться тех из них, с которыми мне довелось столкнуться в своей практике и поделиться способами их решения.

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

Здесь не затронуты непосредственно «бизнес-вопросы»: способы поиска заказчиков, работы с ними, ценообразование и тому подобное. Акцент – на то, как организовать свою работу дома, побороть лень и не потерять при этом физическое и душевное здоровье.

Читать дальше →

Вычисляемые поля для любого LINQ-провайдера

Reading time3 min
Views14K
Привет, Хабр!

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

Зачем это может понадобиться — под катом.
Читать дальше →

Вращаемые битборды: новый виток старой идеи

Reading time21 min
Views18K
image

Краткое описание


Эта статья рассказывает о некоторых нюансах в использовании «битбордов» (64-битного целого числа, каждый бит которого представляет одно поле шахматной доски). В далеком 1994 г., после симпозиума по шахматам, проводимом ACM в Кейп Мей в штате Нью-Джерси, я решился на полную замену программы для Cray Blitz (компьютерная программа, написанная Робертом Хайатом, Гарри Нельсоном и Альбертом Говером для суперкомпьютера Cray — прим. перевод.). Мне было интересно попробовать метод битбордов, опробованный Слейтом и Аткином в «Chess 4.x» (шахматная программа, разработанная в Северо-Западном университете штата Иллинойс, и доминирующая в 70-х гг. XX в. — прим. перевод.), чтобы решить для себя, годится он для шахмат или нет. В ходе разработки этой новой программы была придумана концепция «вращаемых битбордов», и оказалось, что это то самое, что было нужно, чтобы заставить этот тип структуры данных работать с приемлемой производительностью.

Читать дальше →

Пишем свой отладчик под Windows [часть 1]

Reading time12 min
Views47K

Вступление



Все мы, время от времени, используем дебаггер для отладки программ. Отладчик может использоваться с C++, C#, Java и ещё сотней других языков. Он может быть как внешним (WinDbg), так и встроенным в среду разработки (Visual Studio). Но вы хоть раз задавались вопросом, как же работает отладчик?
И вам повезло. В этом цикле статей мы разберёмся от и до, как же работает отладка изнутри. В этой статье рассматривается только написание отладчика под Windows. Без компиляторов, линковщиков и других сложных систем. Таким образом, мы сможем отлаживать только исполняемые файлы, так как мы напишем внешний отладчик. Эта статья потребует от читателя понимание основ многопоточности.
Читать дальше →

Разрушая распространённые мифы о D

Reading time6 min
Views30K
Оригинальный текст: semitwist.com/articles/article/view/dispelling-common-d-myths
Reddit: www.reddit.com/r/programming/comments/118y4m/dispelling_common_d_myths

Вступление


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

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

  • Для D есть IDE
  • DSource угасает, но проекты на D активны как никогда ранее
  • Разделения на D1 и D2 больше нет
  • Phobos — стандартная библиотека? А как же Tango?
  • D — open source
  • D позволяет ручное управление памятью
  • Статическая типизация НЕ означает непродуктивность

Читать дальше →

SDS-TWR Измерение расстояния без рулетки и синхронизации

Reading time3 min
Views11K

Этот топик продолжает серию, посвященную новой технологии позиционирования (локации) людей и предметов в помещении (на территории). Ранее опубликованы: http://habrahabr.ru/post/151496/ и http://habrahabr.ru/post/153237/ .

Позиционирование в системе РТЛС осуществляется путем измерения расстояний от метки до трех или более анкеров с последующим вычислением координат метки. А метод SDS-TWR (симметричного двухстороннего двунаправленного измерения расстояния) позволяет обеспечить необходимую точность, не прибегая к дорогостоящей синхронизации.
Метод регламентируется стандартами ISO/IEC 24730-5 и IEEE 802.15.4-2011.
В системе РТЛС расстояние измеряется между меткой и анкером – двумя беспроводными устройствами, не синхронизированными между собой. Измерение осуществляется в процессе обмена пакетами: запрос – ответ.

Читать дальше →

Инъекция кода в .NET CLR: изменение IL-кода во время выполнения программы

Reading time13 min
Views40K

Предисловие



Изменение .NET метода MSIL кода во время выполнения приложения – это очень круто. Это настолько круто, что можно перехватывать вызовы функций (hooking), сделать защиту своего ПО и другие удивительные вещи. Именно поэтому мне уже давно хотелось это осуществить, но была одна проблема – MSIL код компилируется в машинный код с помощью JIT перед тем, как мы сможем что-либо с этим кодом сделать. А так как .NET CLR не документирована и изменяется от версии к версии, то мы и будем искать стабильный и надёжный путь, независимый от точного расположения адресов в памяти.
Читать дальше →

Будьте добры к программистам

Reading time2 min
Views110K
— Тебе так повезло, что ты программист. Хотел бы я быть программистом.
— А почему ты не научишься?
— Я пытался, заходил на codeacademy и другие сайты, но это не моё.
— Да, программирование, действительно, не для всех.
— Тебе хорошо платят и ты можешь создавать разные вещи. Почти каждый день к тебе поступают сумасшедшие предложения минимум на 100 тысяч долларов.
— Да, это очень лестно. Немножко сносит крышу, если честно.
— Ты получаешь свою долю в компании, все уважают инженеров. Ты можешь воплотить любую идею в приложение и стать богатым. И тебе не нужно для этого никого нанимать.
— Вообще-то программирование делает меня несчастным.
Читать дальше →

Систематизация сборщиков мусора в HotSpot, IBM J9, JRockit JVMs

Reading time5 min
Views17K
Данная статья призвана систематезировать знания о всех современных сборщиках мусора, используемых в HotSpot, JRockit и J9 JVMs. Статья содержит краткий обзор всех режимов сборки мусора с проведенными аналогиями между всеми рассматриваемыми здесь JVM. Статья будет интересна всем, кто интересуется вопросом GC, а также будет полезна тем, кто рассматривает или планирует совершать портирование JAVA приложений на альтернативные JVM.
Читать дальше →

Инструкция начинающего разработчика игр

Reading time12 min
Views225K
Голая бабаВ данной инструкции я попытался осветить основные моменты разработки игр. Инструкция будет полезна для людей, собирающихся заняться разработкой игр в роли лидера (главного разработчика и организатора).

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

Самый богатый айтишник на этой улице

Reading time5 min
Views291K
На одной улице в Бердичеве жили трое портных. У первого была вывеска: “Лучший портной в городе”, у второго — “Лучший портной в мире”, а третий написал: “Лучший портной на этой улице”.

Одно лишь странно повышенное количество статей про рецепты для богатых айтишников не сподвигло меня на написание очередного эпизода в этом хабра-сериале, если бы рецепты оставались в невинно-нейтральном варианте вида “лучше быть богатым, чем больным”. Любой лозунг, любая идея, пусть даже самая расплывчатая, действительно может воодушевить кого-то на размышление, на действие, а там, глядишь, и очередной миллионер появится. Но глядя на все новые и новые “практические” советы, я рискну публично возразить. Дело уже дошло до экономии на покупках в супермаркете и следовании популярным книжкам. Самое время вмешаться: вдруг кому-то удастся избежать ненужных и даже глупых телодвижений.

Вы никогда, НИКОГДА не станете богатым от экономии на покупках в супермаркете!
Сотни миллионов людей в мире экономят как на покупках, так и на самих супермаркетах, не говоря уже о миллионах голодных, “экономящих” на еде вообще. Можно предположить, что достаточно большая часть экономящих людей попадается на удочку относительно больших чисел, получаемых умножением грошей на 20-30-40 лет… без какого-либо положительного финансового эффекта. Причина элементарна: экономический план на десятки лет — это оксюморон. Такой план не учитывает множество факторов, влияние которых весьма значительно и на более короткие сроки, поэтому он может называться мечтой, фантазией, как угодно еще, только не финансовым планом. Кризисы, биржевые скачки, инфляция, изменения в жизни, в работе, в уровне доходов, политической обстановке… да одна только кратковременная флюктуация в курсе валют может мгновенно уничтожить нажитое непосильным трудом (как и наоборот, кстати). Вы не разбогатеете за 20 лет, отказывая себе в шоколадках, или не тратя деньги на сигареты, или “собирая бутылки”. Вернее, не так. Ваш шанс разбогатеть за NN лет совершенно не зависит от ваших сегодняшних действий и еще меньше зависит от мелочей. А все потому, что
Читать дальше →

Инспекция кода. Итоги

Reading time4 min
Views29K


Инспекция кода — это хорошо. Мы используем эту технику в своих проектах не так давно — около трех месяцев, — однако положительные результаты налицо. Мы уже рассказывали на Хабре о внедрении инспекций в процесс разработки, о документообороте при инспекциях, рассказывали о том, как можно оптимизировать процесс инспектирования с помощью инструмента Code Collaborator. Сегодня мы хотим подвести итоги и представить результаты, которых нам удалось достичь за время инспектирования. Поехали!..
Читать дальше →

Unbiased DirectX Рендеринг на GPU, CPU и в облаке

Reading time9 min
Views44K
Как создать рендерер, который бы работал даже на компьютере вашей бабушки? Изначально перед нами стояла немного другая задача — создать unbiased рендер для всех моделей GPU: NVidia, ATI, Intel.
Хотя идея такого рендера для всех видеокарт витала в воздухе давно, до качественной реализации, тем более на Direct3D, дело не доходило. В своей работе мы пришли к весьма дикой связке и дальше расскажем, что нас к ней привело и как она работает.

renderbro resource combined
Читать дальше →

Условие «WHERE» по составным ключам в Entity Framework

Reading time4 min
Views17K
Совсем недавно при разработке проекта с версионностью, я столкнулся с проблемой выборки элементов по списку составных ключей.

Описание проблемы:

При разработке «в условиях» версионности primary key таблиц состоит из Id и Revision. Нужно получить выборку из таблицы БД по передаваемому списку составных ключей (Id, Revision). Такой SQL запрос выглядел бы так (для пяти элементов в списке):
/* Запрос 1 */
select *
from dbo.[Items] i
where  (i.Id = 1 and i.Revision = 2) 
	OR (i.Id = 1 and i.Revision = 4)
	OR (i.Id = 3 and i.Revision = 3)
	OR (i.Id = 3 and i.Revision = 4)
	OR (i.Id = 5 and i.Revision = 9)

Но Entity Framework не позволяет написать такой запрос для списка составных ключей. Максимум что можно сделать стандартными средствами это:
context.Items.Where(i=> idList.Contains(i.Id) && revisionList.Contains(i.Revision))

что превратится в такой запрос (концептуально):
/* Запрос 2 */
select *
from dbo.[Items] i
where i.Id in (1, 3, 5) and i.Revision in (2, 3, 4, 9)

Этот запрос будет выдавать неверные результаты, если таблице Items есть элементы с такими идентификаторами:
Id = 3, Revision = 2
Id = 3, Revision = 4
А в списке составных ключей есть такие строчки:
Id = 5, Revision = 4
Id = 3, Revision = 2

Так как же быть?
Читать дальше →

Вышел Microsoft “Roslyn” CTP

Reading time1 min
Views8.4K
Большинство компиляторов на текущий момент являются чёрными ящиками — они превращают исходный код в объектные файлы или сборки. Цель “Roslyn Project” от компании Microsoft — открыть компиляторы Visual Basic и C#, дав разработчикам возможность пользоваться API, предоставляющим SyntaxTree, Emit API, Symbol API, Binding & Flow Analysis API. Над API надстраивается множество полезных сервисов:


Roslyn можно использовать для генерации кода, анализа и оптимизации, а так же поддержки сценариев и интерактивного использования VB и C#. На днях вышел Microsoft “Roslyn” October 2011 CTP, который уже можно скачать и попробовать на деле. Под катом подборка ссылочек по теме.
Читать дальше →

Когда у проекта больше одного основателя

Reading time2 min
Views9.4K
В геймдеве основатели обычно творческие люди, мечтающие создавать достойные игры. И даже с засильем казуалщины, когда помимо профессионалов сюда просачиваются абсолютно «левые» люди, желающих по быстрому срубить бабла. Отличить таких людей не составляет особой проблемы. Те кто приходит в геймдев, в первую очередь думают о творчестве, деньги уходят на второй план, в отличие от других профессий типа банкиров, спекулянтов, чиновников и им подобных. Поэтому изначально в геймдеве собираются добропорядочные люди доверяющие друг другу.

Но на одном доверии далеко не уедешь, со временем мы меняемся и если на старте основатели совпадали во мнениях, то со временем появляются полностью противоположные планы на дальнейшее развитие. Как пример — основатели Космических Рейнджеров в итоге разошлись во мнениях, один решил заняться фэнтези играми, а другой по прежнему делать игры в стиле научной фантастики. И это не единственный пример, их много — www.gamedev.ru/industry/forum/?id=162545#m10
Читать дальше →

Краткий словарь основных терминов стартап комьюнити, или 33 трэнди вордс для паблик интерэкшенз

Reading time8 min
Views41K
image
Пури́зм (лат. purus — чистый) — преувеличенное стремление к чистоте литературного языка, к изгнанию из него всяких посторонних элементов […], чтобы развитие языка протекало свободно от внешних, случайных влияний и чтобы в наличный состав его не входили чуждые и ненужные ему примеси. wikipedia
Читать дальше →

Легкая прогулка от функтора через монаду к стрелке

Reading time8 min
Views28K

Давайте совершим прогулку по цепочке Pointed, Functor, Applicative Functor, Monad, Category, Arrow, в процессе которой я попытаюсь показать что все это придумано не для того что бы взорвать мозг, а для решения вполне реальных проблем, притом существующих не только в haskell. Большая часть кода написана на C#, но думаю и без его знания можно будет понять что к чему.
Читать дальше →

Завяжите шнурки и подтяните свои штаны!

Reading time5 min
Views34K
Итак, что же замедляет разработку программного обеспечения?

Задумайтесь об этом вопросе на секунду. Как так выходит, что чем дольше Вы что-либо разрабатываете, тем сложнее и неприятнее добавлять в Ваше приложение новые фичи, попиливать архитектуру?

И почему раньше задачи решались так просто, а теперь выглядят запутанными и сложнореализуемыми?

Казалось бы, положение должно улучшаться, ведь Вы уже давно в проекте, разве нет? Почему всё происходит наоборот?
Читать дальше →

Ничего не работает и всем пофиг

Reading time3 min
Views156K

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

  • На моем iPhone 4s 3 гигабайта пространства занимает что-то, что iTunes определяет как “Other”. Никто не знает, что это за “другое” и предлагается либо стереть полностью настройки, либо “удалить и добавить еще раз почтовые аккаунты”. Вообще-то это проблема для меня, потому что на устройстве всего 16 гигабайт!
  • Windows Indexing Service на моем десктопе работает уже 3 дня подряд. Решение? Удалить и пересоздать индекс. Справился всего лишь за день.
  • На каждого человека на моем iPhone приходится 4, а иногда и 5 контактов. Я их всех связал, но они все равно показываются.
  • В программе iMessage у меня есть один человек, который пишет мне и его сообщение показывается от одного из трех контактов с тем же именем. Чтобы пообщаться с ним мне нужно каждый раз узнавать от какого из “его” аккаунтов пришло сообщение.
  • У Microsoft Outlook, наверное, никогда не получалось “корректно завершиться”.

Читать дальше →

Information

Rating
Does not participate
Works in
Registered
Activity