Pull to refresh
61
0
Юдаков Дмитрий @T-D-K

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

Send message

Особенности строк в .NET

Reading time10 min
Views109K
Строковый тип данных является одним из самых важных в любом языке программировании. Вряд ли можно написать полезную программу не задействовав этот тип данных. При этом многие разработчики не знают некоторых нюансов связанных с этим типом. Поэтому давайте рассмотрим кое-какие особенности этого типа в .NET.

Итак, начнем с представления строк в памяти


В.NET строки располагаются согласно правилу BSTR (Basic string or binary string). Данный способ представления строковых данных используется в COM (слово basic от языка программирования VisualBasic, в котором он первоначально использовался). Как известно в C/C++ для представления строк используется PWSZ, что расшифровывается как Pointer to Wide-character String, Zero-terminated. При таком расположении в памяти в конце строки находится null-терминированный символ, по которому мы можем определить конец строки. Длина строки в PWSZ ограничена лишь объемом свободной памяти.
Читать дальше →

Пускаем пыль в глаза или как получить больше заказов на разработку

Reading time6 min
Views64K
У большинства компаний и фрилансеров есть свое видение как нужно привлекать клиентов и конвертировать их в заказчиков. Некоторым это удается хорошо, некоторым хуже, но для многих это проблема, пусть даже сами они об этом неподозревают.



Если при наличии современного сайта, представительного портфолио и рыночных рейтов, процент заказов у вас остается относительно низким, то с большой долей вероятности причина в неправильном процессе начальной коммуникации. Как сделать его более эффективным? Об этом пойдет речь под катом.
Читать дальше →

Расставляем точки над i в Delphi RAII

Reading time5 min
Views19K
Тема RAII в Delphi обычно замалчивается или же информация по этому вопросу ограничивается обсуждением полезности интерфейсов. Но интерфейсы поодиночке не дают многих желаемых возможностей. Когда в Delphi 2006 появилась перегрузка операций, приватные поля записей, собственные конструкторы и методы в записях и, казалось, было бы логично увидеть и автоматически вызываемый деструктор. И run-time позволяет, и в разделе запроса новых фич Delphi на протяжении нескольких лет в ТОП–10 висит запрос №21729 «Record Operator Overloading: Please implement «Initialize» and «Finalize» operators». Наверное, не судьба. Ничего, я покажу, как обойтись без несостоявшихся фич. Так как Delphi 7 живее всех живых, будут рассмотрены решения, совместимые с Delphi 7 в том числе

Времени найти обходные пути было достаточно

Windows 8 и тачскрин без тача

Reading time1 min
Views53K


Ненавистникам заляпанных экранов посвящается.

Ребята из Elliptic Labs разработали бесконтактную систему управления, пока работающую лишь с Windows 8. Здесь используется ультразвук для быстрого снятия данных о положении руки человека в пространстве относительно экрана. Можно управлять системой с помощью жестов, не касаясь экрана пальцами — менять активные окна, скроллить текст, в общем — все на видео ниже.
Читать дальше →

Бесконечные генераторы значений на Delphi + Ассемблер

Reading time12 min
Views8.3K
В функциональных языках программирования есть возможность генерировать бесконечные последовательности значений (как правило чисел) и оперировать этими последовательностями. Реализуется это функцией, которая, не прерывая свою работу, генерирует значения одно за другим на основе своего внутреннего состояния.
Но, к сожалению, в обычных языках нет возможности «вернуть» значения в место вызова не выходя из функции. Один вызов — один результат.
Генераторы удобно было бы использовать совместно с возможностью Delphi по перечислению значений (GetEnumerator/MoveNext/GetCurrent). В этой статье мы создадим функцию-генератор (может даже бесконечную) и будем использовать ее с таким объектом для перечисления, чтобы всё работало прозрачно без необходимости вникать в реализацию.
Читать дальше →

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 1

Reading time5 min
Views105K

Схема успеха



Джон, мы потеряли два листа математических выкладок! Что делать?
Как обычно, Билл… напиши: «отсюда с очевидностью следует…»


image

Чтобы прочитать некраткую сопроводительную записку к схеме – добро пожаловать под кат.

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

Взломать Wi-Fi за… 3 секунды

Reading time2 min
Views2M
Какой человек не любит халявы? Практически все ее просто обожают, и я не исключение. Вдохновленный статьей «Взломать Wi-Fi за 10 часов» я достал из недр харда BT5, скачанный ранее, и записал его на болванку. Результат не заставил себя ждать, и первый пароль был получен на следующее утро. И понеслась…
Читать дальше →

Логично, но незаконно

Reading time6 min
Views22K
Полагаю, что многие пришедшие в славный мир .NET из славного мира С++ прекрасно помнят, как им приходилось буквально впиваться в стандарт, чтобы разобраться, почему язык ведет себя именно так, а не иначе. Многие вещи, которые казались им совершенно очевидны, при ближайшем рассмотрении оказались не то, что неочевидны — а просто-таки прямо противоположны здравому смыслу, на который мы все привыкли полагаться.

Впрочем, вероятнее всего, это проблема многих языков программирования. Многие, думаю, помнят известный ролик WAT, посвященный проблемам некоторых «очевидностей» языков JavaScript и Ruby. Логика привычного мира выходит покурить тогда, когда появляются пограничные области — те, в которые нормальные люди не лазят.

Впрочем, я предлагаю несколько отвлечься от этих высоких материй и взглянуть на язык C# несколько с другой, непривычной стороны. А именно посмотреть некоторые конструкции, которые, с одной стороны, совершенно понятны и легко описываются в терминах языка, а с другой — совершенно отказываются компилироваться.

Я даже не собираюсь спорить с тем, должны ли они компилироваться и работать. Я просто еще раз в очередной раз напомню, что все то, что для нас «логично и понятно» на самом деле может быть совершенно нелогично и непонятно.

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

Делаем Wi-Fi антенну из подручных средств

Reading time1 min
Views362K

Привет всем. Сразу хотел бы сказать, что я не гнался за серьёзным улучшением, но стандартной антеннки мне не хватало, ну и наверно это больше делалось "От делать нечего". Сделать такую антенну легко, и в магазин идти не придется.
Читать дальше →

Опровержение СТО (часть 2: «Возвращение Д’артаньяна» или «Последний довод короля»)

Reading time50 min
Views15K
image

Друзья, предлагаю продолжить погружение в понимание специальной теории относительности.

У нас уже были картинки, анимация(тут) и даже компьютерное моделирование мысленных экспериментов (тут)… которые не смогли поколебать СТО. Большинство парадоксов при подробном рассмотрении нашли свое логичное объяснение. Осталось решить последний, и самый простой…

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

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

Reading time3 min
Views33K


Вот что нам, разработчикам, действительно нужно? Я тут как раз сегодня задумался — накидал несколько букв, сначала комментом, а потом решил, что оно на пост тянет:

Во-первых, меня ужасно раздражает, что всю разработку под винды уже который раз пытаются пересадить подальше уровнем от железа. Побольше толстых прокладок напихать между прикладным софтом и процессором, между пригладным софтом и ОС. ИМХО, ближе к native коду нужно стремиться, ближе к железу, ближе к ОС! К любому железу, к любой ОС. Нужно развивать Object Pascal как альтернативу C++, отличающуюся развитыми средствами ООП, синтаксическим сахаром, за который мы Паскаль любим, мощным IDE и родным быстрым однопроходным компилятором.

Кроме того, нужны развитые возможности интеграции со сторонними библиотеками. Этого, по сравнению с C, очень не хватает. Вокруг множество библиотек, всякие интерпретаторы чего только не умеют, а для Delphi библиотеки нынче фиг найдёшь, и в итоге с известным трудом сам делаешь. А потом переделываешь при обновлении API. Для этого — генераторы тонких обёрток нужны. У Лазаруса есть поделка под названием h2pas, но её ж развивать нужно, а то и интегрировать! Занялись бы они, а?.. А ещё лучше — попробовать осмыслить и сделать прозрачное использование в одном проекте модулей на разных языках — в частности, прямое подключение h-файлов библиотек. Уверен, что линкер можно сделать так, что бы он с этим справлялся.
Читать дальше →

Как распознать кракозябры?

Reading time1 min
Views432K
В комментариях к предыдущему посту про иероглифы сказали, что хорошо бы иметь такую же блок-схему для кракозябр.

Итак, вуаля!


За источник информации была взята статья из вики. В блок-схеме «UTF-16 → CP 866» означает, что исходная кодировка была «UTF-16», а распозналась она как «CP 866».

Как всегда — кликабельно. Исходник в .docx: здесь.

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views95K
Читать дальше →

Распространение игр

Reading time4 min
Views36K
logoЗдравствуйте!

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

Кого заинтересовала данная тема — прошу под кат.
Читать дальше →

Information

Rating
Does not participate
Location
Калуга, Калужская обл., Россия
Date of birth
Registered
Activity