Pull to refresh
0
Булат @DjeyZiread⁠-⁠only

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

Send message

Когда стоит сохранять длину массива в локальную переменную в C#

Reading time1 min
Views7.2K
Читая Хабр, я наткнулся на статью "Стоит ли сохранять длину массива в локальную переменную в C#?" (которая была в разделе «лучшее»). Мне кажется глупый вопрос, не совсем корректные измерения (почему нет измерений для вложенных циклов?) и странный вывод.

Длину массива в С# стоит сохранять в отдельную переменную в случае когда у нас несколько вложенных циклов, ниже пример.

Вот простой тестовый код без сохранения длины массива в переменную:

Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
for (int i = 0; i < arr1.GetLength(0); i++)
{
    for (int j = 0; j < arr1.GetLength(1); j++)
    {
        arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
    }
}

Вот тот же код c сохранением длины массива в переменную:

Random rnd1 = new Random(DateTime.UtcNow.Millisecond);
int[,] arr1 = new int[Int16.MaxValue, Byte.MaxValue];
int len1 = arr1.GetLength(0), len2 = arr1.GetLength(1);
for (int i = 0; i < len1; i++)
{
    for (int j = 0; j < len2; j++)
    {
        arr1[i, j] = rnd1.Next(Int32.MinValue, Int32.MaxValue);
    }
}

Код с сохранением длины массива в переменную (второй вариант) выполняется примерно на 15% быстрее.

Подобный ответ можно найти в более-менее толстых книжках по C# или .Net, но при этом умный человек постит это на Хабре и никто в комментариях не указал ему что длину массива в С# сохраняют в переменную обычно для вложенных циклов и там это действительно имеет смысл.
Читать дальше →
Total votes 32: ↑21 and ↓11+10
Comments16

О том, как из C# я перешел в Elixir/Phoenix

Reading time4 min
Views9.7K
Как-то раз пришлось мне менять работу. До этого я работал только с языками типа Python, C++, C# и ещё парочкой подобных. А теперь пришлось начать работать с функциональным языком. Первые впечатления были «да что за фигня?». Однако у меня получилось достаточно быстро адаптироваться. Далее я расскажу об основных моментах, к которым пришлось привыкнуть или которые пришлось понять, чтобы начать писать быстро и адекватно.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments13

500 лазерных указок в одно место

Reading time4 min
Views216K


Привет, Хабр. В этой статье я расскажу о своём недавнем творении, созданном из 500 лазерных модулей по типу дешёвых маломощных лазерных указок. Под катом много кликабельных картинок.
Читать дальше →
Total votes 295: ↑286 and ↓9+277
Comments330

Как мы делали первый российский смартфон, продолжение

Reading time7 min
Views41K

Итак, на дворе 19 октября 2012 года, наш трюк с прототипом удался и нужно срочно запускать разработку и производство настоящего смартфона. И к марту выдать заказчику партию в 400 штук.

Краткое содержание первой части
В принципе, можно и не читать первую часть, потому что вот её краткое содержание:



Проблема в том, что у кроме медали за успешно проведенную выставку, в активе у нас было немного. То есть мы великолепно разбирались во всём, что касается пластика, дизайна и механики, мы спроектировали несколько сотен корпусов для всяких разных электронных приборов, но при этом почти ничего не понимали в разработке электроники и смартфонов в частности. И вообще, правильнее было бы их называть не смартфонами, а терминалами сбора данных, но мы даже этого тогда не знали.

Зато у нас было большое желание и отвага.
Читать дальше →
Total votes 127: ↑118 and ↓9+109
Comments156

Как мы делали первый российский смартфон

Reading time5 min
Views69K


Эта история началась 1 октября 2012 года, когда мне позвонил институтский товарищ Игорь и попросил помочь с горящим проектом. Они пытались сделать терминал сбора данных для технологического применения в РЖД. Такая штука для обходчиков путей и вагонов, чтобы они могли фиксировать все неполадки онлайн.

Если лень читать - смотрите что получилось в итоге

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

Читать дальше →
Total votes 167: ↑157 and ↓10+147
Comments349

Стив Макконнелл

Reading time3 min
Views144K
Стив МакконеллВ прошлый раз мы познакомились с выдающимся человеком Пол Грэмом, который написал одни из лучших статей о стартапах, программировании и бизнесе. Сегодня я хочу рассказать вам о такой выдающейся личности, как Стив Макконнелл.

Интересно, что в далеком 1998 году читатели журнала «Software Development» признали Стива одним из трех наиболее влиятельных людей в отрасли разработки ПО наряду с Биллом Гейтсом и Линусом Торвальдсом.

Если говорить коротко, то Steven C. McConnell — программист и автор книг по разработке ПО.

Он написал книги «Rapid Development» (1996), «Software Project Survival Guide» (1998), «Professional Software Development» (2004). Журнал «Software Development», кстати, дважды удостоил его книги премии Jolt Excellence как лучшие книги года о разработке ПО.

Кстати, вы наверняка слышали фразу «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете». Так вот, эту фразу приписывают именно Стиву.

Читать дальше →
Total votes 68: ↑55 and ↓13+42
Comments34

CsConsoleFormat: форматирование в консоли по-новому (.NET)

Reading time10 min
Views12K

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


Код быстро превращается в нечитаемое месиво, в котором не разобрать, где логика, где текст, где форматирование. Это ужасно! Когда мы пишем GUI, у нас в распоряжении все прелести современной разработки: паттерны MV*, байндинги и прочие крутые штуки. После работы с GUI написание консольных приложений сродни возвращению в каменный век.


CsConsoleFormat спешит на помощь!

А что это?
Total votes 39: ↑39 and ↓0+39
Comments18

UE4 для Unity разработчиков: создание 2D-игр

Reading time11 min
Views34K


Продолжая сравнение топовых 3D-движков — Unreal Engine 4 и Unity, на этот раз мы рассмотрим их достоинства и недостатки при разработке 2D-проектов. Мы выясним, чем хорош Unreal для 2D, как организована работа с основными элементами двухмерной игры и какими средствами можно реализовать 2D-персонажей со скелетной анимацией.
Читать дальше →
Total votes 46: ↑44 and ↓2+42
Comments29

Добавление рекордов с OAuth 2: Laravel Passport + Unity. Часть 2

Reading time13 min
Views6.5K


Продолжение статьи про добавление рекордов из игры на сайт от конкретного пользователя. В первой части мы сделали страничку рекордов на Laravel и подготовили API для их добавления — как анонимным, так и авторизированным пользователем. В этой части будем дорабатывать готовую игру на Unity про Крысу на Стене, заходить за свой аккаунт и отправлять рекорды на сайт на Laravel с использованием токена авторизации.
На стену с крысом
Total votes 10: ↑10 and ↓0+10
Comments3

ASP.NET MVC. Урок 0. Вступление

Reading time2 min
Views782K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Total votes 290: ↑215 and ↓75+140
Comments67

In-Memory OLTP в SQL Server 2014. Часть I

Reading time9 min
Views30K
Функциональность In-Memory OLTP (проект Hekaton) призвана ускорить обработку типовых OLTP-операций в SQL Server. Как известно, нагрузку, приходящуюся на сервер баз данных, будь то Microsoft SQL Server или Oracle/MySQL или SAP/Sybase или IBM DB2 и т.д., можно условно разбить на два класса: сбор данных и анализ того, что собрали, потому что зачем в противном случае было собирать? Первый класс задач называется OLTP (On-Line Transactional Processing). Для него характерны короткие обновляющие транзакции, затрагивающие относительно небольшое число таблиц в базе. Примеры таких приложений — операционный день в банке, биллинг в телекоме и т.д. Второй класс задач называется OLAP (On-Line Analytical Processing) и характеризуется массивным длительным чтением, охватывающим значительное количество таблиц и собирающим из них, как правило, по максимуму записей, изобилующим предикатами связывания, сортировки, группирования, агрегатными функциями и т.д. Как правило, структуры данных для разных классов задач разделяют, чтобы не мешали друг другу, и если первая структура базы строится с учетом многочисленных правил Кодда, то вторая, напротив, денормализована и выполняется по схеме «звезда (снежинка)».
Устремление СУБД в память проявилось в начале нового тысячелетия, когда выяснилось, что несмотря на закон Мура тактовая частота и быстродействие процессоров растут отнюдь не по экспоненте, а наоборот, выходят на плоскую прямую насыщения невзирая на ILP и прочие ухищрения. В то же время цены на оперативную память, когда-то неприлично дорогую, катастрофически снижаются и по сравнению с 90-ми упали в тысячи раз. Ага, сказали себе производители серверов баз данных. В 2005-м Oracle прикупил in-memory СУБД TimesTen, IBM в 2007-м — компанию Solid, а в Microsoft в данном случае ничего со стороны брать не стали, потому что решили воспитать в своем коллективе.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments7

Введение в .NET Core

Reading time19 min
Views191K


На конференции connect(), мы объявили, что .NET Core будет выпущен полностью как программное обеспечение с открытым исходным кодом. В этой статье мы сделаем обзор .NET Core, расскажем, как мы собираемся его выпускать, как он соотносится с .NET Framework и что это все означает для кросс-платформенной разработки и разработки с открытым кодом.
Читать дальше →
Total votes 58: ↑52 and ↓6+46
Comments12

C# + WPF + сторонние сборки -> один .exe-шник

Reading time3 min
Views25K
Бывает приходится разработать маленькое приложение на C# и WPF, однако в следствие использования сторонних сборок(например SharpZipLib, Unity) — получается так что на выходе у нас кроме нашего маленького .exe-шника получается ещё и куча .dll-ок, а нам нужно чтобы был именно один .exe-шник.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments12

Шпаргалка по шаблонам проектирования

Reading time2 min
Views1.4M

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Total votes 192: ↑179 and ↓13+166
Comments66

Создание Telegram-бота для получения информации о криптовалютном кошельке Dogecoin

Reading time12 min
Views21K
image
Со времени описания технологии блокчейн в 2008-м году и появления первой реализации в 2009-м (биткоин) по настоящее время создано более тысячи криптовалют. Каждые несколько дней проводятся ICO. Многие занимаются майнингом или игрой на криптовалютных биржах.

В связи с тем, что валюты нестабильны и их курс постоянно меняется, во избежание потери сбережений важно иметь возможность в кратчайшие сроки получать актуальную информацию о курсе и состоянии своих счетов.

Так как информация о блокчейне общедоступна, то доступ к ней возможен с помощью веб-сервисов и мобильных приложений. Для мониторинга состояния счетов удобно использовать мультивалютные мобильные приложения. Однако из-за высокой скорости создания новых криптовалют не все разработчики успевают добавлять их поддержку, и пользователь вынужден устанавливать другие приложения с требуемой валютой, что сказывается на удобстве и на занимаемом объёме памяти устройства. Здесь нам на помощь приходит ещё один тренд современности – чат-боты, API управления которыми предоставляют большинство мессенджеров.

Рассмотрим создание чат-бота для Telegram, предоставляющего информацию о счетах такой криптовалюты, как Dogecoin. Dogecoin был представлен в 2013-м году и назван в честь интернет-мема Doge. Часто используется для сбора пожертвований и благотворительности.
Читать дальше →
Total votes 22: ↑17 and ↓5+12
Comments1

SignalR Core. «Hello Habr!»

Reading time6 min
Views30K
Коротко: небольшой самодостаточный пример, иллюстрирующий SignalR для .NET Core 2 и разработку в IDE Rider. В самом конце — видео Dino Esposito с конференции DotNext на эту же тему.

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


Очевидно, есть готовые библиотеки, которые берут это на себя. В мире веб-приложений ASP.NET это SignalR, она позволяет разработчику абстрагироваться от перечисленных сложностей и использовать простую программную модель для работы с push-уведомлениями.


Total votes 30: ↑30 and ↓0+30
Comments10

Как я бесплатно продвигал свою игру через YouTube

Reading time6 min
Views20K
Привет, Хабр. Я думаю было бы хорошо для начала представится. Меня зовут Новичков Андрей, сам я родом из Украины (город Киев), на момент написания статьи мне 21, живу в небольшой однушке с девушкой и маленьким котенком. Сам интерес к играм у меня появился в 5 лет, когда мой отец принес домой приставку Dendy. Моей первой игрой стала Марио. Именно этот усатый итальянец лишил меня игровой девственности и открыл мир видеоигр. Я настолько был потрясен и вдохновлен играми, что мог пять минут рассматривать декорации на уровне или слушать начальную песню в меню игры. Когда мне было 13 лет, наша семья купила первый компьютер и тут я просто потерял голову. Это был новый уровень. Я с восхищением смотрел на всё это и понимал, что эти игры создают такие же люди, как и я. Тогда чем я хуже? Поэтому, мои 13 лет стали отправной точкой в геймдев. Я чувствовал, что хочу попасть в это движение.
Читать дальше →
Total votes 47: ↑31 and ↓16+15
Comments32

Профилирование и оптимизация веб-приложений на Go

Reading time12 min
Views63K

enter image description here


Привет, меня зовут Павел Мурзаков, я – разработчик в команде Features в Badoo. Нам важно, чтобы наши сервисы потребляли как можно меньше ресурсов, поскольку каждый дополнительный сервер стоит денег. Поэтому мы часто профилируем и оптимизируем код. Часть наших демонов написана на Go, с оптимизацией кода на котором мне пришлось работать в последнее время. Благо в стандартной библиотеке Go есть множество готовых инструментов для этого.


Недавно мне попалась эта статья, в которой собрана информация о многих инструментах и на конкретном примере показано, как начать ими пользоваться. Кроме того, в ней есть несколько хороших рецептов по написанию эффективного кода. Эта информация будет полезна любому начинающему Go-разработчику (более продвинутые тоже смогут найти что-то для себя), поэтому я сделал для вас перевод. Enjoy!

Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments5

Чуть не уволили по статье… на Хабре

Reading time5 min
Views57K
Не писала на Хабр почти полтора года — обживалась на новой работе. Конечно же, в IT-сфере. Но общее весеннее обострение коснулось и нашей компании, появился повод написать. История такая: один из сотрудников написал хороший пост в свой личный блог на Хабр (NDA не был затронут). Чуть позже продакт менеджер сказал ему, что сделал он это зря и, если дойдёт до босса, будет грустно — потому что генеральный считает, что пост на Хабр = отправленное резюме на новую работу. Успешный пост с хорошим рейтингом убрали в черновики, дело замяли, мы тут спитые сплочённые. Коллега в печали — конечно же, он писал, чтобы поделиться своим опытом разработки и проектирования, а заодно померяться кармой.

Мой ник никто не знает, контору не спалят — вот и решила я написать утешения пост поговорить о той самой нематериальной мотивации. Не плюшками и креслами-грушами, а именно моментами, так скажем, шеринга знаний.


Примерно так коллега видел свой диалог на ковре у босса
Читать дальше →
Total votes 137: ↑120 and ↓17+103
Comments481

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity