• Как более грамотно сформулировать тему диплома "Интернет-магазин"?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Не в обиду, однако задайте вопрос, а станет ли мир лучше, если будет создан ещё один бесполезный интернет-магазин. Дипломная работа в первую очередь должна быть актуальной, а значит как минимум привносить что-то новое. Подойдите к этому вопросу.

    А по делу, попробуйте что-то вроде "Использование современных инструментов, фреймворков и методов при разработке %my_project_name". Во-первых, внезапно переместился акцент с "новейшая вакцина от британских учёных", на процесс, где воды можно налить намного больше, взять то же экстремальное программирование. Во-вторых, внезапно появляется слово современный, а так как все эти js-библиотеки, php-фреймворки, CMS-движки имеют свойство меняться с незавидной частотой, это слово скорее всего окажется верным. Ну а методы... Экстремальное программирование уже было упомянуто, придумайте уж хоть что-то своё.

    Однако, лично я бы не брал такую тему. Она... Как бы сказать, не очень хорошая для диплома. Возьмите тот же apache, протестируйте его вдоль и поперёк, покажите, какие настройки будут оптимальны для того же интернет магазина. По сложности примерно то же, по актуальности в разы лучше. Или сделайте нагрузочное тестирование VPSок и дедиков на сравнимых заявленных характеристиках. Попытайтесь посчитать потери "на виртуализацию". Ещё можно попробовать посчитать всевозможные метрики пользователей, то как среднее время препровождения на интернет странице, однако здесь потребуется что-либо хоть сколько-то раскрученное. В общем, тем тысячи. Да возьмите один компонент той же бесполезной CMS и выкопайте от туда всё что можно и нельзя. В дипломе нужен анализ, а не вода. Намного приятнее диплом, в котором 20 страниц чистого анализа, того диплома, в котором 120 страниц воды. Не надо делать ещё один интернет магазин. Придумайте что-нибудь хоть сколько-нибудь оригинальное.
    Ответ написан
    Комментировать
  • Если нет выделенного IP, какой выход?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    В общем и целом, если не обращать внимания на Alex да, без отдельного сервера почти никак. Всё равно кто-то должен знакомить. Однако, я заметил некоторую неразбериху в терминологии. Вообще, есть три способа ограничения по IP в сети:
    + всех посылают за NAT; классика, никакого доступа к компьютерам из вне, однако, самый безопасный ;) При этом неважно, динамический он или статический - это роли вообще не играет.
    + динамический внешний IP, был когда-то популярный, да и сейчас нередко встречается - это когда на разные сессии определяется разный IP; однако, засилье Wi-Fi роутеров и домашних серверов сводят идею балансировки практически на "НЕТ". Лечиться с помощью noip.com.
    + статический внешний IP - самый труЪ, ибо полностью снимает любые ограничения.

    В целом внешний сервер в любом случае потребуется, ибо каким-то образом надо будет "знакомить" клиент с сервером, который всё таки за NAT, то есть так просто его не увидеть. Но. Советую обратить внимание на IPv6, который в последнее время стал относительно распространён. В любом случае будет применяться технология тунелирования, когда пакеты IPv6 пихаются в пакеты IPv4, при этом знакомить нас будет некоторый внешний сервер. Можно настроить это дело самому, можно использовать сторонние сервисы, суть не важно. Важно, что если Вам не повезло быть за NAT, то придётся потрудиться.
    Ответ написан
    Комментировать
  • Hdd Seagate не понятно умер или нет?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Как сказали Дмитрий и MgmZog - причин тысячи. Верна любая из них, причём возможны комбинации. Определить причину неработоспособности диска сродни гаданию на кофейной гуще. Так что, либо в гарантию, либо в другой сервис. Хотя, конечно, Вы можете попробовать сделать всё сами, но в любом случае - я предупреждал: 99.(9)% мир обретёт ещё один сломанный HDD.

    Моё личное мнение - выкидывайте Seagate нахрен. Они всегда были далеко не лучшими по качеству, а сейчас, видимо из-за прошлых цунами, да и в общем нестабильной ситуации на рынке, скатились в унылое гавно. Мой личный опыт - их топовый винчестер меняли три раза. Теперь либо Hitachi, либо Western. На остальное не стоит даже обращать внимание (если это не SSD или гибрид, офк, здесь не знаем).
    Ответ написан
    Комментировать
  • Как правильно организовать регулярное выражение в C#?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Алексей Немиро всё правильно написал. Единственное, что - msdn тут не причём. Да, статья по регексам там не очень, однако такого и без этого достаточно. Советую почитать, как они работают и банально потренироваться.
    Ответ написан
    Комментировать
  • Как работает голосовое чтение гугл переводчика? Есть БД с нужным текстом или по ту сторону сидит человек и это начитывает?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ответ написан
    Комментировать
  • А какой ваш путь изучения ЯП?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Оглянись! Эй, да отверни ты голову от монитора. Зеркало видишь? Подойди и посмотри туда. Видишь странного парня? Поздравляю, ты найден! Есть ещё вариант. Выключаем монитор. Смотрим в него. Снова видим себя! Ещё варианты?

    А вообще, не парься. Делай что нравиться, ходи куда с кем нравиться, ешь что любишь, помогай близким, но себе в первую очередь, люби всех, но близких в первую очередь, слушай их, но думай сам, и учись, учись и ещё раз учись. Всему. Не делай только двух вещей: не планируй и не планируй заниматься тем, что тебе не нравиться (кроме учёбы), ибо планы разочаровывают тем, что ничего не выполняется, а планы неприятных действий разочаровывают в двойне: ничего не выполняется, а делать надо всё равно. Ой, а при чём тут языки программирования? Тоже задаюсь этим вопросом.

    Удачи!
    Ответ написан
    Комментировать
  • Проигрывает ли ООП в Python по сравнению с C#, С++ или Java?

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

    class Foo:
    	A = None
    
    
    foo = Foo()
    # some code here
    if foo.A is not  None:
    	# continue execute right way
    else:
    	exit(1)


    становиться каким-то таким:
    class Foo:
    	class PropertyUsedBeforeInit(Exception):
    		pass
    	_a = None
    	@property
    	def a(self):
    		if self._a is not None:
    			return self._a
    		else:
    			raise self.PropertyUsedBeforeInit()
    	@property.setter
    	def a(self, val):
    		self._a = val
    
    try:
    	foo = Foo()
    	# just write ur code here
    except Foo.PropertyUsedBeforeInit:
    	exit(1)
    finally:
    	exit(0)


    Этот пример довольно синтетический, поэтому "лучший" вариант больше в размерах, однако, полезно заметить, что стоит добавить классов, добавить свойств, добавить вариантов вылета, как второй вариант внезапно становиться...

    Хотя, на самом деле, на вкус и цвет друзей нет. Python крут тем, что он многогранен. Его можно использовать в тяжёлом энтерпрайзе (второй вариант), его можно использовать и для лабораторных в универе (первый вариант), его можно использовать и для домашних проектов (любой вариант). Его можно использовать везде. Его можно компилировать во что угодно. И его архитектура устроена именно таким образом - дать свободу. А модификаторы доступа - это то, за чем в общем-то должен следить программист. А соглашения помогают разрабатывать и использовать модули (библиотеки).

    Ну, а по поводу того, кто круче. На моё "ИМХО", Python таки в чём-то круче. В нём реализованы те вещи, которых нет в C++ и Java вместе взятые и при этом они реализованы лаконично и прозрачно. Взять те же декораторы: очень простая штука. Ну просто невероятно простая. А имеем что? Очень мощный инструмент. Плюсам и джавам потребовалось бы невероятное усилие, чтобы реализовать что-то подобное. Да что там, они анонимную функцию делали сто лет.
    Ответ написан
    Комментировать
  • Где брать данные о котировках Форекс?

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

    Ну а в крайнем случае, можно использовать тот же metatrader. Только надо найти адекватную биржу, а я таких даже не знаю.
    Ответ написан
  • Есть ли какой то шаблонизатор для C#?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Этот велосипед пишется на раз-два.
    Ответ написан
    2 комментария
  • Предположим, что поисковики выключили. Как находить необходимую информацию в интернете?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Товарищи. Прежде чем формировать вопрос, лучше спросите самого себя. Ну, хотя бы банально определение "поисковик". Вот тот же toster. Что это? Чем не поисковик? Доменное имя. Тоже что-то значит. Чем не поиск? Ведь что такое поиск? Это фильтр информации. Если уж быть радикальным, то, чтобы выключить поисковики, нужно внезапно выключить мозг у всех людей. И даже сервера google не надо будет выключать.

    И чем вообще крут google? Yandex? За счёт чего они живут? Внезапно, за счёт рекламы. Которая становится всё более и более навязчивой, при этом притворяясь всё менее и менее таковой. Я к тому, что суть не в поиске. Суть в распространении.
    Ответ написан
    2 комментария
  • Как настроить беспроводной жесткий диск (или другие варианты) для работы с ТВ?

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

    Варианта, по сути, два (оба озвучил Артем ):
    + ТВ приставка, коих много. Оптимальный вариант: часто они сами умеют качать торрент. Ещё, как вариант, HDMI-донгл. Некоторые даже умеют транслировать экран ПК на ТВ, а если использовать что-то вроде ace stream, то торренты можно даже не качать. Алсо, можно и собрать небольшой ПК, благо современные камни умеют декодировать 1080p без дополнительной видеокарты, так что ПК может обойдётся (с приятным корпусом и тучей функций) по цене недорого нетбука, хотя последний транслировать те самые 1080p будет ну очень тяжко. Но суть у всего этого одна - использовать какую-нибудь консоль к телевизору, то есть НЕ использовать возможности самого ТВ.
    + HDD сам умеющий работать с сетью, однако с возможностью подключения через USB. Здесь один момент - необходим такой, чтобы он умел это делать одновременно. По сути, это получается что-то вроде NAS, но из одного HDD. Не самый лучший вариант, ибо по закону Мёрфи что-нибудь, да отвалиться, а починить это вряд ли будет возможно.

    Однако, имхо, комфорт от этих штук сильно преувеличен. Если финансы поют романсы, то лучше не ждать много от китайских подделок. В то же время, если не сильно хочется самому во всём разбираться, тем более, что придётся немного переплатить, то лучше вообще забить на эту идею, а просто взять не очень дорогой внешний жёсткий диск. Рекомендую WD или Hitachi: оба работают безотказно, наименьший процент брака. Остальные часто бракуют. Лучше привести всё в порядок на ПК. И написать пару скриптов (bash или Power Shell), чтобы быстро перекидывать на HDD скачанные фильмы. Ну или сразу на него скачивать. Это очевидное и простое решение, не требующие каких либо лишних телодвижений сейчас, и требующий минимум телодвижений потом.
    Ответ написан
    Комментировать
  • Как правильно организовать разделение экрана на 2 части в android?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Доброго времени суток. Мне надо сделать разрез справа для удаления аппендицита, но к сожалению, я так и не смог разобраться где право, поэтому хотелось бы найти робота, который распознаёт где право и сообщает мне или сам делает разрез, но почему-то все существующие роботы режут человека на две части, а мне нужен живой человек с разрезом. Где можно найти такого или как вообще такого сделать не используя кремниевые компоненты?

    UPD.
    Смотрите в сторону OpenGL (тогда придётся самому всё рисовать, зато можно получать содержимое экрана... хоть как-то). Или попробуйте получить скриншот экрана и уже с ним делать что угодно. И к соседней ветке - никто бы не платил программистам тысячи и десятки тысяч долларов за глупые телодвижения.
    Ответ написан
  • Быстрая передача данных клиент-сервер?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Смотрите. Подумайте, что будет с вашим приложением, если потеряются хотя бы половина пакетов. Если всё плохо, то TCP/IP. Если вполне себе приемлемо, то UDP/IP.

    Вообще, лучше не думайте, что UDP так хорош. Он банально неудобный. Пакеты имеют размер. К тому же, он целиком и полностью асинхронный - нередка ситуация, когда один пакет пропускает пару других. Вместо плавности можете получить лишь дёрганье. В то же время, при достаточно хорошем расположении, TCP/IP будет работать вполне себе адекватно. И зависания будут именно зависанием, а не каким-то странным подёргиванием. А если уж приложение станет популярным, к Вам уже провайдеры проведут оптический линк.
    Ответ написан
    Комментировать
  • Математическая литература - почему всё так плохо?

    Deerenaros
    @Deerenaros Автор вопроса
    Программист, математик, задрот и даже чуть инженер
    Раз уж начали так спешно подписываться на мой совершенно бесполезный вопрос... Таки поделюсь полу-решением.

    Khanacademy - шикарный ресурс с огромным количеством материалов. Что есть: все разделы математики, неплохо структурированы, хорошо подобраны. Отлично подан материал. Английский очень простой - у меня не возникало проблем слушать. Чего нет: всего нового. Материал конкретно по математики едва дотягивает до нормального университета. Никаких геометрий Лобачевского или доказательств теорем Ферма. Что хорошо: попытка учить в игровой форме, неплохой дизайн (не вырвиглазный), социальный аспект. Что плохо: не вырвиглазный дизайн не значит отличный, до хорошего едва дотягивает, неплохо структурирован также не означает отлично - всё таки некоторый хаос присутствует, хотя бы в том, что материал не очень хорошо связан даже между подразделами. Не говорю о разделах. И самое ужасное - плохо оценивает текущие знания. Уже какую неделю бьюсь об него и нередко глупо ошибаюсь. Понимаю, что ошибся. Но он снова за своё - повторяет и повторяет эти бестолковые несократимые дроби. Открывать calc.exe лениво, считать в уме получается не очень.

    Однако, для начальной систематизации может подойти.
    Ответ написан
    Комментировать
  • Было NTFS, стало FAT-32. Как восстановить данные после форматирования?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Форматируйте обратно в NTFS и снова в R-Studio. Конечно, форматировать надо с теми же настройками, что были ранее. И да, форматируйте быстро. В смысле, Вам надо только восстановить таблицу разделов.

    Но. Во-первых, если данные действительно хоть как-то важны - перед любыми опытами сделайте полную бинарную копию диска. Например, с помощью утилиты dd. И желательно потом работать именно с образом, а не диском. Во-вторых, если данные очень важны, лучше доверьтесь профессионалам. Они знаю что делают и вероятность успешно восстановить данные сильно возрастёт. В-третьих, если не поможет новая старая разметка - тогда открываем образ в hex-редакторе, изучаем строение NTFS (оно не сильно сложное) и выковыриваем файлы руками. Хотя возможно это будет и очень долго.

    И, наконец, ещё раз повторю "во-вторых". Доверьтесь профессионалам.
    Ответ написан
    3 комментария
  • Стоит ли изучать JavaScipt и C# одновременно с нуля?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ну, тут зависит от человека... В общем случае, ответ, конечно нет. Причём это про любое так можно сказать. Не важно, насколько они похоже, при изучении чего либо требуется тотальная концетрация.

    Однако. Стоит заметить, что во-первых, JS и C# таки похожи в синтаксисе. По крайне менее, точно будут случаи, когда программу на C# почти без изменений браузер сожрёт да не подавиться.

    Но тут вот что важно помнить. C# - это такой канонический ООП. C# стабилен, C# стандартен, C# быстр. И да, он таки удобен. В чём-то. В большинстве.

    JS - это попытка впихнуть ООП в хаскел, дополнительно заменив все ключевые слова на куда большие в размерах. Однако, во-первых, зачем-то имплементировали прототипную модель наследования. Она удобна в относительно редких случаях. Во-вторых, JS сложен, а от этого сложна и компиляция и исполнение, да даже для освоения он сложен. В-третьих, JS-ов много. Вообще, JavaScript - это имплементация спецификаций ECMAScript. Как и ActionScript. И ещё тысяча этих script'ов. Однако. Есть ещё и DOM. И с ней надо работать. А это тоже медленная штука. И вообще - браузер очень медленная штука. Отчасти это связано с тем, что стандарт действительно сложен, отчасти с тем, что современные страницы мало чем отличаются от сложных программных продуктов, однако часто выполнены с ошибками (бывают даже умышленные ошибки). Причём доступа к железу нет почти никакого. Отсюда - сложный контроль производительности. Отсюда...

    А... Что там. JS убог. Чуть менее чем полностью. Если нет нужны верстать HTML не трогайте его вовсе. Если есть нужда - то придётся. В любом случае. Даже не смотрите на CoffeScript, TypeScript и подобные. Их можно будет изучить. Потом.

    Забыл написать самое главное. Программирование - штука многогранная. И как я писал выше - JS убог. Но так уж случилось - просили одно, хотели другое, выходило третье, а вышло - четвёртое. И всё перемешалось, умешалось, замешалось и.. Получился такой вот страшный гибрид. Функциональный, да не очень. Объектный, да не совсем. Портативный, да тоже как-то не сложилось целиком. Однако, он всё таки очень многогранный. Несомненно, те практики, которые Вы получите при изучении JS могут очень сильно помочь при использовании C#. И наоборот. Классические подходы разные, однако классика не всегда подходит.
    Ответ написан
    2 комментария
  • Стоит ли использовать RSA?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    И да и нет одновременно.

    (обновлено, ибо внезапно прочитал и половину не понял - видимо писал на "потоке")
    RSA стоит использовать лишь для шифрования других ключей - ключей симметричных алгоритмов шифрования. AES, ГОСТ 28147-89, 3DES и другие. Почему? Во-первых, симметричные алгоритмы более устойчивы к взлому при большом известном закрытом тексте, тогда как ассиметричное шифрование потенциально имеет изъяны. В том смысле, что (почти) любое ассиметричное шифрование использует задачу NP-класса (точнее - NP-полную задачу): факторизация числа (RSA), декодирование полных (общих) линейных кодов (McEliece), вычисление дискретного логарифма на элептической кривой (ГОСТ Р 34.10-2012), или в конечном поле (Elgamal). Другое дело, что любая эта задача потенциально - решаемая. В случае с симметричным шифрованием действительно стоит лишь надеяться на чудо (в ГОСТе разрешено выбирать любые s-блоки, так что криптоаналитику ничего не остаётся, как молиться пролетариату в надежде на терморектальный криптоанализ). В случае же с ассиметричным шифром в дело вступают две вещи - высокая сложность реализации действительно стойкого алгоритма (ассиметричные шифры очень сложны и полны нюансов, не учитывая которые можно запросто порушить систему), низкая скорость работы (в силу того, что приходиться использовать очень абстрактные математические функции, сложно реализуемые аппаратно и таящие в себе множество низкоуровневых операций) при требовании к очень длинным ключам заставляют использовать небольшие ключи для того, чтобы не ждать вечность.

    Однако. Здесь имеется странный парадокс. Если данные очень важные и на их защиту можно убить несколько миллионов енотов, то надо использовать только ассиметричный шифр. Потому что, он потенциально даёт большую стойкость. Парадокс здесь в том, что если классы P и NP неравны, то мы получаем едва ли не идеальную и приемлемую по стоимости защиту, так как есть возможность сложной организационной защиты.
    (здесь было многое отправлено в топку)

    Окай, посмотрим на стандартную схему с Алисой, Бобом и Евой:
    Алиса -> c = E(m, Eb) -> -------- -> D(c, Db) -> Боб (
                                     |
                                     |
                                     v
                         Ева <- c, E, D, d

    здесь m - текст, который надо передать (сообщение)
    c - шифротекст
    E - функция шифрования (получения из сообщения шифротекста)
    D - функция дешифрования, иначе - обратная функция шифрования (получения из шифротекста - сообщения)
    Eb, Db - секретный и открытый ключи Боба (в литературе используется различное обозначение, здесь так)
    Собственно, Ева знает всё о функциях шифрования и дешифрования, имеет доступ к шифротексту и будем считать, что она получает и открытый ключ.

    Теперь, что нам это даёт? А это нам даёт возможность наплодить большое количество ключей и шифровать каждое сообщение отдельным ключём. Потенциально, но если есть $$$, то можно скупить половину серверов страны, если не планеты и радоваться жизни. Хотя ровно так же можно поступить и с симметричным шифрованием, и называется это одноразовым блокнотом, используют и различные режимы шифрования и всё равно выходит профитнее. Где же профит здесь?
    Во-первых, если нужно передавать по каналу, а не хранить, то можно генерировать ключи налету и после расшифровки их уничтожать. По сути, получиться что для того, чтобы получить сообщение длины l бобу потребуется передать и ключей в общей сумме длины l. Много? Да. Профитно? Очень - ибо мы реализуем
    ассиметричный одноразовый блокнот (упс), который, однако, нет никакого смысла использовать нет - слишком дорого. Да и не всегда возможно - порой обратный канал чрезвычайно узкий.
    Во-вторых, есть способ организовать защиту, основанную на иерархии пользователей. То есть майор Алиса написала отчёт, который ей надо отправить подполковнику Бобу. При этом читать этот отчёт должны иметь право все, кто равен или выше подполковника.
    В-третьих, как писалось выше, сложность взлома достаточно велика. И не только потому, что P != NP. Даже P довольно большое получается, поэтому и используют асимметричный шифр для передачи ключей симметричных ключей. Но и взлом получается очень не простым из-за тяжёлых математических абстракций. Обычно. Да, RSA можно "взломать" перебрав все возможные делители, но это долго из-за астрономического размера ключа. А способы обхода или упрощения опираются на такой зубодробительный матан, что попытка как-то это реализовать заставит использовать сами по себе очень тяжёлые операции. Так это при работе с банальными числами (и это показывает, насколько плохо развита теория чисел), а что если уйти на эллиптическую кривую - аналитическая геометрия развита может чуть лучше, но абстракции намного тяжелее для компьютеров. И даже использование графических карт не помогает, ведь есть ещё и макэлис. Я к тому, что O(2^32) для симметричного шифра и O(2^32) для асимметричного шифра не очень таки равны. Так же не равны, как не равны день и месяц.

    Но самое главное. Сегодня всё что угодно можно взломать. А то, что нельзя взломать - бесполезно (ибо либо уничтожено полностью, либо предоставляет такие же непосильные сложности для расшифровки и получателю). Во-первых, атака может быть не на сами шифры, а на организационные методы (которые, можно улучшить применением асимметричного шифра). Во-вторых, некоторые шифры таки имеют изъяны, просто возможно о них знают ограниченный круг лиц; привет масонам. И, наконец, криптоаналитик может быть просто ну очень удачлив.

    Поэтому шифрование надо использовать соразмерно цене риска. Чем выше риск - тем сильнее шифрование, но самое главное - сложнее и дисциплинированнее организационные меры. Согласитесь - бесполезно иметь централизованное хранилище сертификатов с одним сервером в бункере за 200 км под землей и круглосуточной охраной из армии маленькой страны, всего лишь одним портом торчащим во внешний мир с каналом около 200 бит в секунду и постоянным наблюдением за организационными методами (авторизация, доступ и подобной)... Имея пароль на суперюзер - qwerty, и держа на винчестере архив с котиками.
    Ответ написан
    Комментировать
  • Как распечатать элементы массива по часовой стрелке?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Ничего не понял. Что значит "по часовой стрелке"? Двумерный массив обойти спиралью? Ну, не знаю, где такое может применяться, ну тогда да, рекурсивно проще. Пишем простую рекурсивную функцию с параметром - глубиной спуска - с базой в нуль (или половина размера массива, так будет понятнее, что значит глубина). Потом аккурат обходим массив, берём первый элемент, например, верхний правый. Потом левее. Дошли до границы? Теперь нижний, так до следующей границы. Потом идём вправо, и, наконец, вверх. В конце - функция вызывает саму себя, спускаясь по глубине дальше.

    Если же надо на экране распечатать массив по часовой стрелке, то здесь надо будет выбрать центр на экране и переходить по экрану (например, c помощью VT100-кодов или JCurses). Немного синусов - косинусов. И магия - можно отображать часы.
    Ответ написан
    Комментировать
  • Какова философия python и django?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Django - это эдакий комбайн, альтернатива Rails для Python. Соответственно из его философий - это простота и функциональность, дисциплина и модульность, удобство и производительность. Получается у него это весьма не плохо. Хотя есть свои моменты, не самые приятные, скажем так.
    Если по поводу Python, то здесь неплохо подходят такие слова, как простота, лаконичность, скорость. В некотором смысле удобство. Порой, хотя это и официально скорее возбраняется, есть такая неприятная особенность, как write only, то есть пишется код легко и просто, но через пару лет прочитать его будет весьма сложно.
    Ну и потом, Python - Generic Purpose Language, то есть он всё таки предназначен для всего, а не в основном для вэба. Порой это видно. Например, на его основе нет нормального сервера, нет нормальной поддержки https. И в то же время, он один из немногих (хотя сегодня это почти не так), неприемлит cgi-bin.
    К слову, хочу обратить внимание, на такой фреймворк, как Flask. Он пока не очень быстрый, зато лёгкий и очень модульный. К тому же на нём легко писать.
    Ответ написан
    6 комментариев
  • Какие разделы математики актуальны в сфере нейронных сетей и ИИ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Никакие и все.

    Немного лирики. Дело в том, что нейронные сети штука очень непонятная. Она неплохо классифицирует, вроде бы умеет учиться. Но вот принимать решения она почти не умеет. То есть, в каком-то смысле она принимает решения, во время классификации, соотнося образ к паттерну, однако на деле всё как-то печальнее. А ещё она совершенно не умеет выполнять алгоритмы в классическом смысле слова. Ну и получается, что вся суть нейронной сети, всё, что она будет делать определяется её параметрами и входными данными. Вроде бы и похоже на алгоритм, но алгоритм можно определить 1) без входных параметров (классический), 2) не параметрами, а набором действий. Нейронная сеть более... Аналоговая.
    Отсюда мы подходим к тому, что нам обязательно нужен будет дифференциальный и функциональный аппараты. К сожалению, современные компьютеры не способны адекватно работать с бесконечно малым и большим, поэтому нам обязательно потребуются методы приближения: это и сами вычислительные методы, и некоторые методы оптимизации (они и по другим причинам потребуются). Да и совсем не лишними будут теория чисел, статистика, мат.логика и определённо более общие теории вероятностей и случайных процессов.

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

    Но стоит понимать, что все эти разделы очень тесно переплетены. Не получиться поднять какую-то одну часть отдельно от другой. Всё взаимосвязано. Вообще, очень рекомендую khan academy - наикрутейшая штука. По всей видимости, есть всё, что я здесь описал.

    Нажал ctrl+enter рановато...
    Как можно заметить, в общем-то нужна вся математика. Если какой-то раздел не указан, то он скорее всего будет затронут в других разделах.

    Однако, нейронные сети очень новая... Практика. По сути они работают примерно так: мы берём туеву хучу интегральных и дифференциальных уравнений, берём какое-то приближение и реализуем "квантуя" и "дискретезируя", а потом запускаем. Причём в момент отсчётов всё вроде бы хорошо - процессы идут, ошибка обратно распространяется, однако... Есть небольшая проблема в том, что между этими обновлениями нашей модели как бы и не существует. И если в реальном мире частота дискретизации ну невероятно высока, настолько, что мир кажется гладким (впрочем, есть возможность, что он такой и есть - сейчас не совсем понятно, какой мир и в самом деле), однако в нашей модели эта частота получается ну очень низкой. Поэтому учёные просто молятся, чтобы ничего плохого между этапами существования их модели не произошло. Честно говоря - сомнительное занятие.

    Так что, если не желаете продвигать науку вперёд, очень советую бросить это дело. Можете построить пару простейших перцептронов, однако на большее советую не рассчитывать. Сыровато.
    Ответ написан
    8 комментариев