Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как защитить Web приложение?

Лучший ответ:
Рекомендую Вам для начала задуматься над вопросом: "от кого вы собрались защищаться?". 
Если Вы хотите чтобы Ваш клиент, не обладающий специальными навыками не уркал Ваше ПО, то Вам будет достаточно обфускаторов, о которых пишут коллеги выше (Zend, например).
Если Вы хотите защитить решения от угроз извне приложения, Вам следует нанять специалиста разработчика и провести аудит безопасности Вашего решения. Так же можете воспользоваться сканерами безопасности, типа XSpider или подобных.
Защитить же решение, которое размещается на внешнем сервере от хакеров / крякеров или иных специалистов, которые почему-то захотели именно Вашу программульку, Вам скорее всего самому не удастся. В таком случае стоит обратиться к профессионалам. Скорее всего Вам предстоит в таком случае пересмотреть архитектуру Вашего ПО, а так же каналы его распространения. Самый надежный сегодня вариант - это архитектура Software as a Service и собстенные защищенные сервера. Так поступают лидеры рынка, которые заполонили веб своими облачными решениями.

Худший ответ:
Гуглить по «обфускация php»
Вопрос: AddForse без Gravity возможен?

Лучший ответ:
Гравитация влияет на все активные Rigidbody, у которых стоит галка Use Gravity
или Gravity Scale отличен от нуля
AddForce с гравитацией никак не связан, для физического движка это просто ещё одна сила.

Худший ответ:
А почему, собственно, и нет?
Вопрос: 64 или 32 битная архитектура?

Лучший ответ:
64 бита имхо. Потом проще будет апгрейдить сервер.

Да и вообще почему встал такой вопрос? Я думаю для сервера 64 должно быть как правило.

Худший ответ:
«Насколько я знаю, Debian не страдает проблемой понимания больше 4 ГБ оперативки»
Все страдают этой проблеммой, тут дело не в оси а в адресации, адреса выше 3.2 гб выходят за размер 32 бит.
Вопрос: Какими технологиями должен обладать backend разработчик (уровень начальных знаний — новичок+)?

Лучший ответ:
Так как вы не указали язык программирования... напишу то, что не особо от него зависит.
архитектура клиент-серверных приложений
HTTP (базовые понятия, Http verbs, формат записи заголовков и основные заголовки, такие как Content-type)
Реляционные БД - SQL, нормализация данных, понимать разницу между inner join, left join, outer left join и т.д (в зависимости от выбранной СУБД).
nosql БД (опционально) - денормализация данных, понятие о агрегации данных (в случае MongoDB/CouchDB и т.д.). На начальном этапе можно не замарачиваться штуками типа шардинг/репликация. Так же рекомендую потыкать какой reddis как простенькое key-value хранилище.
По архитектуре приложений можно погуглить "GRASP паттерны". Правда по началу можно так же не особо замарачиваться и обратить внимание только на такие штуки как "сильная/слабая связанность системы".
Ну... остальное зависит от языка программирования. Как определитесь - для всех основных языков тут уже составлялся план развития.

Худший ответ:
Спасибо отписавшимся. 
Про ЯП и 1С. 
ЯП я пока никакой толком не учил, по этому и прошу совета, "с чего начать, куда идти" (с).
т.е. Хотелось бы услышать/прочитать советы: какой язык программирования выбрать (java, php), чтобы через 3-4 месяца изучения языка найти работу; какие доп. знания нужна приложить к выбранному языку (основы HTML/CSS, например), в подобном стиле.
1С занимаюсь, т.к. после выпуска надо было идти работать, а в сфере IT только одна вакансия была. Но все равно, интересная деятельность, не столько программирование, а скорее анализ бизнес-решений и организация производства (в УПП работаю), да и слышал что много разработчиков 1С переходят в Java. Да и опыт, опыт все равно хорошее дело, мало ли что в жизни будет. (а вдруг 1с захватит мир?)
Вопрос: Что выбрать: HTC One или Nexus 5?

Лучший ответ:
Nexus - стабильные и быстрые прошивки от гугл, One - приятный дизайн, камера, для кого-то плюс, для кого-то минус, портреты довольно хорошо снимает, для пейзажей не хватает детализации из-за мегапикселей, камеры в нексусах всегда не хвалят, но на нынешнем уровне, делает достойные фотографии. Если гик и прошивки важны то нексус, если просто аппарт которым приятно пользоваться то я наверное все-таки one взял бы.

Худший ответ:
5S, без комментариев
Вопрос: Подскажите с sql-запросом

Лучший ответ:
Т.к. это результат другого запроса, то решение следующее:

SELECT ВАША_ТАБЛИЦА.value 
FROM ( SELECT value FROM… bla bla ) AS tbl < — тут ваш второй запрос
LEFT JOIN ВАША_ТАБЛИЦА ON ВАША_ТАБЛИЦА.value2 = tbl.value

( SELECT value FROM… bla bla ) — должен быть запрос, возвращающий в столбце value требуемый вам список

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

SELECT value 
FROM table t
JOIN tmp_tabel t2 ON (t.value2 = t2.value)
Вопрос: В чем профит такого способа написания if()?

Лучший ответ:
Условия Йоды

Худший ответ:
Страховка от присваивания. Чтобы вы не присвоили переменной значения вместо сравнения с ней.
Вопрос: RegExp-задачка

Лучший ответ:
Правильно послал вас  к позиционным проверкам

Смысл в том что бы исключить условие что цифры внутри скобок, то есть вводим проверку на отсутствие впереди закрывающей скобки (?!.*\)). Но возникнет проблема в том что мы можем таким образом захватить пару скобок впереди. Для исключения этого случая вместо любого символа ищем все, кроме открывающей скобки, — (?![^\(]*\))

Конечный регэксп выглядит так: /\d{4}(?![^\(]*\))/

Худший ответ:
Использование позиционных проверок
Вопрос: Как обычному пользователю Windows перейти на Linux?

Лучший ответ:
Уважаю Ваш выбор в сторону свободного ПО.
Можно установить две ОС на одном компе. Как это сделать можнл посмотреть на ютубе. Но еще лучше пользоваться виндой под virtualbox, а отдельными прогоаммами из под wine. 
Читать книги муторно. Проще посмотреть несколько видюшек с торрентов и ютуба:
Ubuntu:
nnm-club.me/forum/viewtopic.php?t=234407
Автор (режиссер): Сергей Панзин
Название: Видео уроки для начинающих пользователей Linux Ubuntu
Год выпуска: 2010
Продолжительность: 2:58:44
Описание:
Видео уроки уроки для начинающих пользователей Linux Ubuntu .
Вступление :
0. Подготовка к установке Ubuntu 10.04 (130 Мб)
1. Настройка Bios (30,2 Мб)
2. Установка Linux Ubuntu 10.04 (108 Мб)
3. Файловый менеджер в Linux Ubuntu 10.04 (65,6 Мб)
4. Работа с файловой системой в командной строке (14,6 Мб)
5. Установка драйвера видеокарты NVIDIA (117 Мб)
6. Обзор графической среды Gnome (80,6 Мб)
7. Настройка внешнего вида графической среды Gnome (67,7 Мб)
8. Установка программ в Linux Ubuntu 10.04 (94 Мб)
Бонусный. Как быстро найти ответ по системе Linux
Дополнительные уроки.
1. Ускорение Linux Ubuntu. (В Ubuntu 10.04 вход в меню grub осуществляется удерживанием клавиши shift)
2. Mail.ru агент в Linux Ubuntu
3. Запуск windows-программ в Linux Ubuntu
4. RAR архивы в Linux Ubuntu 10.04
5. Запуск Photoshop CS5 в Linux Ubuntu
6. Работа с саундфонтами в Linux Ubuntu 10.04
7. Установка русских пакетов локализации в Linux Ubuntu 10.04
8. Настройка Nvidia TV-OUT (S-VIDEO) в Linux Ubuntu 10.04
9. Установка темы похожей на windows xp
10. Установка и запуск Adobe Dreamweaver CS 4 в Linux Ubuntu 10.04
11. Установка темы похожей на windows 7
12. Nautilus scripts
13. Запуск windows игр в Linux Ubuntu 10.04
14. Virtual box в Linux Ubuntu 10.04
15. Activesync в Linux Ubuntu 10.04
16. Создание локального репозитория (debmirror)
17. Работа с консолью
Серия видеоуроков по настройке и использованию compiz
1. Базовые настройки compiz. Куб рабочего стола
2. Расширенные настройки compiz
3. Остальные эффекты compiz
А так же:
nnm-club.me/forum/viewtopic.php?t=768069
nnm-club.me/forum/viewtopic.php?t=82770
А дальше читать книги по конкретным программам. Например по Gimp. Хотя по нему так же есть и видео. Так и перейдете постепенно.
Лично я предпочита Ubuntu с графическим интерфейсом KDE - kubuntu.

Худший ответ:
Хотелось бы научится так, чтобы мог собирать свои дистрибутивы и работать с ним свободно
Вам шашечки или ехать? 
Собирать дистрибутивы и работать в них это разные вещи. Нужно перейти, просто переходите.
Вопрос: Вычислитель в аренду

Лучший ответ:
Да. Amazon EC2 вам в помощь. Можете развернуть много слабых юнитов, если задача хорошо параллелится. Я языковую модель большую через EC2 обсчитывал. В принципе, удобно. 

Правда, на счет Mathematica сильно сомневаюсь. Теоретически, можно ее поставить на созданные инстансы. Однако, почему бы не воспользоваться какими-нибудь специализированными инструментами попроще.

Худший ответ:
Рекомендую взять Amazon EC2 Cluster GPU Instances или Peer1 HPC Cloud 
Для цифромолотилок Quardo самое лучшее решение.
Вопрос: Как используя IT помочь человечеству?

Лучший ответ:
Нерешенные проблемы науки

Худший ответ:
свяжите docdoc.ru и благотворительные организации
если интересно, то присоединяйтесь. я этим уже занимаюсь
Вопрос: Правильно ли я делаю цикличную проверку полей?

Лучший ответ:
Откуда Вы взяли такой уродливый код?
Вот посмотрите как вариант на это codepen.io/bingo347/pen/ZWyxGb

Худший ответ:
Попробуй отслеживание ввода текста, только не работает с автозаполнением и копи-пастом, для этого нужен скрипт, для комплекса событий
https://learn.javascript.ru/keyboard-events
Вопрос: "Поддомен" с пробелом в htaccess. как?

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

Худший ответ:
Увы, это как раз тот случай, когда надо. Ну, по крайней мере очень хочется.
Вопрос: Посоветуйте eBay-посредника

Лучший ответ:
Делал заказ на книжку через ebaytoday.ru в Amazon. Прислали более дешёвую модель, чем заказывал. Явно перепутали с закаом в ebaytoday, но свалили всё на Amazon. Предложили пересылку, но без гарантий сохранности товара в процессе. Разборки длились почти месяц. Предпочёл компенсацию и реализовал обмен через Avito.
Про Shipito вроде больше лояльных отзывов. Лучше пробуйте с ним.

Худший ответ:
ebaytoday.ru
надежный ;)
Вопрос: PHP Занятость хоста во время мульти курла

Лучший ответ:
Если так важна многопоточность, то почему был выбран PHP? Я так понимаю, что блокирование хоста зависит от настроек веб-сервера и вы просто занимаете все выделенные child-процессы. Может помочь увеличение их количества.

Худший ответ:
Если используется Apache, то вероятнее всего дело в MaxClients.
А вообще смотрите логи, там обычно причина блокировки пишется.
Вопрос: Что выбрать для переделки сайта bitrix или djangocms?

Лучший ответ:
Берите жанга, потому что учить битрих это долгое дело, конечно же, я не имею ввиду, что жангу Вы освоите быстрее, но зато не будете париться с пхп, ведь Вы отлично знаете пеитан

Худший ответ:
Если писали на python, то берите django (Не CMS, смысла в ней особо нет). Там ничего особо сложного нет, нужно только перед самим кодингом посидеть с ручкой и бумажкой и немного попроектировать структуру бд и сайта.
Или же добро пожаловать в мир{ => :: };
Напишите для начала небольшой блог или туду из туториала. Поймёте где что в проекте размещать, роутинг через регэкспы и.т.д.(Пишется за вечер).
Вопрос: Как изменить стиль первого абзаца?

Лучший ответ:
Решил проблему с помощью .class>p:first-of-type{
font-weight: bold
}

Худший ответ:
Вы немного не поняли принцип работы селектора :first-child. Он бы сработал если бы было так:<div class="class">
  <p></p>
  <p></p>
  <img src="image.jpg" />
</div>
Другими словами если бы тег p был бы первым дочерним элементом блока.
В вашем случаи вы можете сделать так:.class p:nth-child(2){
  font-weight: bold;
}
Вопрос: SockJS, node.js, а что если php не успеет?

Лучший ответ:
А что будет если не успеет JS? Из описанного вами, издержки на доставку данных будут в десятки раз привышать издрержки на вычисления. Для начала стоит понять что setInterval не гарантирует того, что функция будет вызвана именно через одну секунду, там тоже будут свои флюктуации в силу однопоточности JS. Как с этим бороться, сходу не подскажу, все зависит от логики приложения.
10 000 одновременных запросов к серверу (именно отдельных запросов, а не через WebSockets) могут положить небольшой сервер. Для этого существует нагрузочное тестирование.
TCP гарантирует отсутствие потери данных, собственно по этому в реалтаймовых штуках TCP используется только в случае, если UDP дает большую потерю пакетов (например UDP трафик режется или что-то в этом духе). То есть когда сервер отправляет пакет, от откладывает его в буфер до подтверждения его получения клиентом. Если сервер в течении определенного времени не получает по ICMP подтверждения о том что пакет был отправлен, он заново начинает отправлять весь буфер. Когда буфер полон - новые пакеты вы отправить уже не можете пока не освободится, насколько я помню, хотя бы половина. В реалтайме же вас не должна смущать ситуация с потерей пакетов (если данные помещаются в один пакет конечно), так как у них не так много времени, что бы нести "актуальные данные". проще послать следующий пакет. чем переотправлять уже не актуальные данные. Но WebSockets не работают с UDP.

Худший ответ:
А что будет если не успеет JS? Из описанного вами, издержки на доставку данных будут в десятки раз привышать издрержки на вычисления. Для начала стоит понять что setInterval не гарантирует того, что функция будет вызвана именно через одну секунду, там тоже будут свои флюктуации в силу однопоточности JS. Как с этим бороться, сходу не подскажу, все зависит от логики приложения.
10 000 одновременных запросов к серверу (именно отдельных запросов, а не через WebSockets) могут положить небольшой сервер. Для этого существует нагрузочное тестирование.
TCP гарантирует отсутствие потери данных, собственно по этому в реалтаймовых штуках TCP используется только в случае, если UDP дает большую потерю пакетов (например UDP трафик режется или что-то в этом духе). То есть когда сервер отправляет пакет, от откладывает его в буфер до подтверждения его получения клиентом. Если сервер в течении определенного времени не получает по ICMP подтверждения о том что пакет был отправлен, он заново начинает отправлять весь буфер. Когда буфер полон - новые пакеты вы отправить уже не можете пока не освободится, насколько я помню, хотя бы половина. В реалтайме же вас не должна смущать ситуация с потерей пакетов (если данные помещаются в один пакет конечно), так как у них не так много времени, что бы нести "актуальные данные". проще послать следующий пакет. чем переотправлять уже не актуальные данные. Но WebSockets не работают с UDP.
Вопрос: Почему Google пытается проиндексировать несуществующую страницу?

Лучший ответ:
Если внешняя ссылка стоит где-то то бот всё равно может ломиться на эту страницу.
Может страница была раньше и была ссылка, потом убрали, но страница пока ещё "в индексе".
Есть вариант что вы плохо искали и ссылка всё же где-то стоит, может в sitemap гугл обычно выдаёт место откуда ссылка на страницу стоит, в яндекс-вебмастер можете добавить для интереса.
Надо настроить всё так что бы при обращении по ЛЮБОМУ адресу (и каталогам) кроме существующих страниц сайт отдавал правильную 404 страницу и передавал в заголовке в т.ч. код 404

Худший ответ:
1/ просканировать сайт на наличие index.php
2/ .htaccess строка DirectoryIndex index.htm
3/ в службу поддержки Google
Вопрос: Kакой &quot;стандартный&quot; batch separator для MySQL и PostgreSQL?

Лучший ответ:
Точка с запятой в конце строки.
SELECT * FROM `table`;

Худший ответ:
Если я не ошибаюсь, то с помощью команды delimiter можно установить любой разделитель запросов.
Вопрос: Веб-дизайн + верстка = как сказать одним словом?

Лучший ответ:
Веб дизайн - сфера графического оформления сайта, вёрстка - способ "натянуть" макет дизайнера на сайт. В любом случае, эти обе сфера связаны с графикой и никак не с программированием "мозгов" сайта. Я полагаю, веб дизайнер отличается от просто дизайнера тем, что понимает в веб интерфейсе, умеет мыслить блоками CSS фрейморков. Само собой, полноценный веб дизайнер должен понимать как реализовать макет в реальности а значит априори иметь навыки верстальщика.
Итог - не майтесь, просто называйтесь веб дизайнером в самом полном понимании этой профессии.

Худший ответ:
Нет такого слова.
Вопрос: Адаптация на сайте через Jquery, хорошо или плоха?

Лучший ответ:
Ошень плохА нашальника

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

Лучший ответ:
ln -s чем не подходит?

Худший ответ:
С помощью твикера переназначил стандартные пути к медиа папкам
Наверное дело в этом твикере, что это за тулза?

А что, простая символическая ссылка уже не работает?

в терминале:
cp -r ~/Видео && rm -rf ~/Видео && ln -s /mnt/ssd/Видео ~/Видео

p.s. если по каким то причинам символические ссылки не пашут и если это обычная домашняя установка без перемещаемых профайлов и большого количества пользователей...:

sudo gedit /etc/fstab

добавляем что то типа:
/dev/sdb1/Видео /home/sk8er/Видео none bind 0 0
Вопрос: Возможно подключить FOSUserBundle на средней стадии разработки?

Лучший ответ:
Можно, но задайте себе вопрос, зачем? Если вам на 90% хотя бы функционал FosUserBundle нужен - то может и имеет смысл.
В любом случае - разницу базы данных можно разрулить миграциями (DoctrineMigrationBundle).

Худший ответ:
Я понимаю, таблица пользователей которая сейчас в наличии, сильно отличается от генерируемой FOSUserBundle, разве что совпадения по основным полям (username, email, password). 
У FOS user bundle есть своя сущность пользователя, находиться в вендоре.
При подключении fos и необходимости своих полей для пользователя тебе надо создать новый бандл для переопределения FOSBundle, а сущность пользователя расширить от фосовского пользователя.
Т.е. твой юзер со своими полями ложиться поверх юзера фона и фос работает с твоей entity user используя свои поля.
Так что проблемы подключить никакой нет. Функционал твой никак не надо менять, кроме механизма авторизации, которую ты отдаёшь на откуп FOS
Подробнее почитай вот тут symfony.in.ua/symfony2-fosuser-documentation-conte...
Вопрос: Программирование на планшете?

Лучший ответ:
Сударь знает толк в извращениях.

Худший ответ:
Ну как, получилось? Какие трудности были?
Вопрос: С какой мобильной ОС возможно загрузить файл в интернет?

Лучший ответ:
Я думаю вопрос не совсем корректно задан. Куда именно в интернет? Я со своей древней nokia n86 могу загружать хоть exe на тот же DropBox. Куда именно вы хотите загрузить файл? Может ограничения — это не смартфона, а всё-таки самого файлообменника?

Худший ответ:
На iOS это возможно с jailbreak с помощью твика «Safari Upload Enabler» из Cydia.
На Windows Phone можно через Opera которую портировали из WM.
Вопрос: Почему функция времени работает не верно в php?

Лучший ответ:
time выдает время в UTCThe documentation should have this info. The function time() returns always timestamp that is timezone independent (=UTC). 

Худший ответ:
>> 'Функция времени работает не верно'
Orly?
>> 'но тем не менее, он разве не должен выдавать время совпадающие с Москвой?'
Кто он? PHP? Ну да, для Москвичей же создавался.
В общем, сначала нужно объявить дефолтную временную зону:
date_default_timezone_set('Europe/Moscow');
Вопрос: Что нужно иметь android разработчику для нормальной разработки?

Лучший ответ:
Я бы рекомендовал забыть про разработку на эмуляторах, лучше на реальном устройстве. Если на эмуляторах, то чтобы все более или менее живенько работало нужно ставить HAXM или genymotion (x86 образы под VirtualBox). Веб разработка и разработка под Андройд - совершенно разные образы мышления и программирования. Правда и там и там есть секс с разметкой. Монетизация мобильного приложения проста и приносит больше денег, чем раскрутка сайта или просто заработок на разработке "сайтиков".

Худший ответ:
норм писать и на эмуляторах, я делал так пока не обзавелся планшетом
 - ставиться виртуал бокс
 - на нем разворачивается андроид образ, искал по ключевому слову "android x86 4.0 EEEPC" , это сборка для нетбуков
- пробрасывается инет на виртуалку
- профит
по скорости работы в 100500 раз быстрей родных эмуляторов, но геолокация, пуши и некоторые штуки ни на каких эмуляторах не пашут(почти), а так начать можно и нужно без железного девайса
Вопрос: Почему модель не находит таблицу?

Лучший ответ:
Имя таблицы берется из статического метода tableName(). Если он в модели не определен, Yii пытается сгенерировать имя таблицы самостоятельно, что у вас и происходит. 
Странно, что у вас модель Country получилась пустая. Допишите имя таблицы и все заработает./**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'country';
    }

Худший ответ:

Пробовал исправить на:
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use frontend\models\Country; 
Это вы зря сделали. У вашей модели Country указан namespace app\models, а вы пытаетесь подключить ее из namespace frontend\models. Исправьте в CountrySearch строкуuse frontend\models\Country;
на use app\models\Country;
По поводу первоначальной ошибки.
Вам нужно добавить в CountrySearch методpublic function tableName()
{
      return 'country';
}
Это связано с тем, что Yii2 при отсутствии этого метода в производном классе (CountrySearch), в качестве имени таблицы модели используется результат этого методаpublic static function tableName()
{
        return '{{%' . Inflector::camel2id(StringHelper::basename(get_called_class()), '_') . '}}';
}
Вопрос: Полнотекстовый поиск на mongodb

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

Худший ответ:
Посоветую использовать Solr, как движок поиска
http://lucene.apache.org/solr/
Вопрос: Как задать Hover эффект при наведение на картинку с таймаутом?

Лучший ответ:
Начинали вы правильно, но не доделали чуток :)
jsfiddle.net/DelphinPRO/b1ybz2jn

Худший ответ:
А если у меня на айпаде нет мышки и курсора?
Вопрос: Ключи в перекрестных таблицах M-to-M?

Лучший ответ:
я использую оба варианта но в разных ситуациях.
1- вариант — если связь не обладает характеристиками, например контент и теги
2 — вариант — при наличии у связи характеристик — т.е. например если нужно ограничить доступное количество подобъектов из контекста первой сущности для второй, то этот лимит хранится в таблице со связью, им нужно манипулировать, для этого и вводится персональный идентификатор

Худший ответ:
PRIMARY KEY по полю ExpertTechnologyId можно и не делать(в некоторых случаях это может снизить производительность и не всегда действительно востребованно), но само поле ExpertTechnologyId как мне кажется необходимо. Оно удобно для отладки запросов, пригождается в программе. И как вы сами написали, часто первый вариант апгрейдят до второго.
Вопрос: Как защищать прииложение (C#)?

Лучший ответ:
Пока придумал брать id какого-нибудь железа, шифровать RSA, например, а при запуске сравнивать данные
Одной железки, по-моему, будет мало. В идеале, брать несколько железок и каким-нибудь алгоритмом ( например, который здесь: geektimes.ru/post/69623 ) генерировать открытым ключом последовательность, уникальную для данного компьютера, а уже на сервере производить подпись, выдавая серийный номер к каждому экземпляру программы.
Учитывая, что пишите на C#, а в нем очень легко восстановить исходный код программы, нужно будет использовать обфускаторы. Возможно даже скрывать реализацию защиты в отдельных модулях, написанных на компилируемых ЯП.
Ну, и в заключение, чтобы избавиться от разных патчеров и генераторов ключей, нужно будет дописать еще один модуль защиты, который бы при запуске сверял хеш программы/отдельных модулей и, если они были изменены, запрещал запуск программы.

Худший ответ:
dedot снимает любой протектор, после чего можно восстановить сорец приложения.
-> Защищать приложение на .NET - бесполезно.
Можно писать на плюсах, это значительно усложнит задачу.(или, как вариант, писать левой пяткой без использования ООП, чтобы анализировать такой код даже не хотелось) :D
Вопрос: Самый «долгий» смартфон?

Лучший ответ:
Что-нибудь из линейки Philips Xenium

Худший ответ:
более менее долгоиграющие смартфоны у Mototola и Philips