Ответы пользователя по тегу Программирование
  • Какая есть бесплатная библиотека на C# для воспроизведения и записи аудио на Linux+Windows?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Смотрите в сторону gstreamer. Не знаю, как для шарпов, но для явы биндиги есть, сам на нем пишу audio-приложения.
    И да, для шарпов тоже есть - https://gitlab.freedesktop.org/gstreamer/gstreamer...
    Ответ написан
    Комментировать
  • Как можно найти сайты с подключённым онлайн чатом Битрикс24?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Максим Макаров, херовая задача, с херовым решением. Я бы за такую не брался, за любые деньги.

    1) Выгрузить базу данных российских доменов
    1.1) Обработать базу, сдалав url сайтов
    2) Написать паука, которой будет хватать корневую страницу сайта (желательно по SSL)
    3) распарсить страницу на предмет подключения javascript битрикса
    5) подождать недельку-другую, а то и месяцок, и собрать статистику...

    ЗЫ. Так как база русских доменов - примерно 5% всех мировых доменных имен, то готовьтесь...
    Домены можно получить например так - https://github.com/AlexeyManikin/domain_statistic
    Сразу посмотрите в сасом низу....
    Далее каждую ночь база данных доменов будет обновляться. На двух процессорах E5-2690v2 с 225 гигабайтами памяти процесс обновления БД з анимает 3-6 часов.
    Ответ написан
    7 комментариев
  • С чего начать изучать программирование микроконтроллера STM32F401RET6?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот прямо отсюда начать - https://habr.com/ru/company/ruvds/blog/529832/
    Ответ написан
    Комментировать
  • Как настроить окружение Linux что бы основным компилятором был кросскопилятор?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Для сборки есть утилита make. Рекомендую изучить, причем настоятельно!
    Ответ написан
    2 комментария
  • На каком контроллере можно реализовать HID устройство (при нулевом опыте общения с аппаратной частью:)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Например на STM32. Практически любая отладочная плата подойдет, например STM32F4DISCOVERY. Кстати, там демо-прошивка как раз этулирует компьютерную мышку и мыргает диодиками.
    www.st.com/en/evaluation-tools/stm32f4discovery.html
    Ответ написан
    Комментировать
  • Как сделать курс "протоколы и интерфейсы информационных систем" интересным?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Начните с простого, с протокола RS-232, его как минимум можно смотреть осцилографом, причём - самым простым.
    Далее - сделайте распределенную сеть на RS-485, введите маркеры и адресацию.
    Поговорите про аналоговые модемы, потом расскажите по DSL (ADSL/HDLS).
    Переходите к кодированию ТВ-сигналов, вот здесь уже можно и на телевизоре крестик рисовать через STM32 например,
    Далее - технология цифровой передачи DVB-S (-C), тоже достаточно просто. Тут же помехозащищенное кодирование RS (Reed-Solomon), перемежение. Факультативом - пишем восстановление блоков данных, рассказываем про массивы RAID.
    Рассказываем про параллельные линии, начиная от параллельного порта, через Centronics, SCSI-8/16, всяким шинам данных типа VME, переходим к современным протоколам работы памятью.
    Дальше - коммутация, начиная от телеграфа к телефонии и заканчивая каким нибудь Infiniband и мультисервисными сетями типа ethernet 10/40Gb со всеми вытекающими.

    Ну и возвращаемся к последовательным высокоскоростным линиям SATA/Ethernet/PCI-e.

    По интерфейсам, начинаем с терминалов RS-232 и заканчиваем WEB, наверное, как ни парадоксально.

    PS. Хорошо бы учесть специфику слушателей... Если это будущие "бухгалтеры", тогда, что я написал - для них overflow будет...

    PPS. Вынесу наверх...
    Увы, на мой взгляд, нельзя вот так просто объяснить как этот ftp/gopher/http/GUI работает, без хотя бы введения в "а что у нас есть такое протокол, и почему он возник..." (А возник как раз из-за симплекса и телеграфа, еще до телефона, а то и раньше, начиная с сигнальных костров и тамтамов).
    Также, наверное, бестолково объяснять дизайн современных интерфейсов без истории сигнализации лампочками, технологий ввода информации (да перфокарта, клавиатура, мышь, дисплей)
    Ответ написан
  • Перспективы embedded разработки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Но многие говорят, что время низкоуровневого программирования прошло, сейчас только веб, C#, Java и т.д.

    Весь вопрос не в том, что время прошло, а в том, где больше всего железок выпускают и строят фабрики/заводы с автоматизацией.
    Что касается низкоуровнего программирования, то время совсем не прошло и специалисты требуются постоянно. Вопрос в другом, что эти специалисты практически не нужны (увы) на наших просторах. Я знаю десяток фирм, в которых есть отделы разработок (сам когда-то возглавлял такой), там специалисты нужны постоянно. Еще знаю с десяток предприятий, которые делают свои железки, там тоже нужны программисты. И всё! Если вы живете в городе-миллионнике, то работу по программированию железок вы найдете в легкую, и очень хорошо оплачиваемую, и интересную (что не всегда)!
    Но если вы родились в городе с меньшим населением, задумайтесь о переезде, возможно и совсем туда.
    Ну и еще немного сменились акценты, если раньше все пытались разработать свою железку, и написать под нее ПО, то теперь для подавляющего числа задач можно взять любой ПЛK и просто посадить инженегра, который на языках МЭК составит вам блок-программу.
    Но тем не менее, область низкоуровневого программирования цветет и пышет.
    Возможно, с выпуском отечественных CPU/SOC и нацеленностью на это нашего законодательства, ситуация как-то и будет меняться в лучшую сторону.
    Ну а пока, в основном хорошо живут те, кто занимается аутсорсом ПО на чужие железки (в основном забугорные).
    Ответ написан
    2 комментария
  • Для чего читать Таненбаума?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А вот я Таненбаума не читал. Сети можно изучить и без него, например
    "Компьютерные сети. Принципы, технологии, протоколы. Учебник для вузов", Олифер & Олифер.
    Ответ написан
    2 комментария
  • Как научиться понимать как работает память на низком уровне?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.

    Интересует момент начиная от. Вот объявляем мы переменную и что происходит дальше и как дальше структуры и классы располагаются в памяти.

    Все сильно зависит от используемого языка программирования, типа архитектуры, и извратов программистов, исследователей и математиков.
    Рекомендую прочитать вот это, все очень понятно и в картинках - www.cs.virginia.edu/~evans/cs216/guides/x86.html
    Ответ написан
    Комментировать
  • В каком формате ТВ приставки (ростелеком / т.п.) принимают сигнал? Как его можно программно сымитировать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сигнал принимается потоком мультикаст в формате MPEG2TS с кодеком MPEG4 или MPEG2. Сымитировать по простому можно через плеер VLC. Протоколы RTP или UDP для мультикастовой рассылки.
    Вот так это можно сымитировать - https://wiki.videolan.org/Documentation:Streaming_...
    Но скорее всего у вас не получился принять этот поток на приставку, так как она наверняка привязана к провайдеру и у вас не получится ее переключить на собственный канал.
    Ответ написан
    2 комментария
  • Как передать выполнение программы на сервер?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Здесь есть несколько вариантов.
    1) сделать свой софт на основе какой нибудь message queue. Вариантов масса, начиная от rabbitmq и заканчивая hadoop.
    2) использовать что-то типа библиотек mpi.
    3) поставить систему PBS типа sungrid, torque или htcondor.

    Как раз с htcondor мы сейчас и развлекаемся, переводим кластер с сангрида на него.
    Система не из тех, что "установил и поехал". Но вменяемая дока и хелпы.
    Ответ написан
    Комментировать
  • Как протестировать программу на совместимость с разными ОС и архитектурами?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Собственно да. Обычно так теперь и делают, разворачивают парк виртуалок и в них тестируют. Очень удобно. Устанавливаете один раз, делаете копию чистойсистемы и аждый раз с чистой системой. Более того, если у заказчика какое-то специфичное окружение, то его очень просто развернуть и в виртуалке, вплоть до проброса туда соответсвующего оборудования ( но не всегда оно пробрасывается, увы).
    Ответ написан
    Комментировать
  • JDBC всегда стараться использовать PreparedStatement?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Лучше всего использовать именно PreparedStatement, если не используете какой нибудь ORM.
    1) Это безопасно, так как исключает позможность SQL-injection
    2) Это типо-безопасно - java-way.
    3) Это быстро, в некоторых типах jdbc-драйверов они компилируются в хранимые процедуры на стороне базы (например в sybase/mssql и oracle) или в псевдокод на стороне java, а также они кешируются.

    Пользуйте везде, где можно именно PreparedStatement - javarevisited.blogspot.ru/2012/08/top-10-jdbc-best...
    и javarevisited.blogspot.ru/2012/03/why-use-prepared...
    Ответ написан
    1 комментарий
  • Каковы перспективы программиста МК? Как обстоят дела на рынке Embedded?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ассемблер не нужен! Учите С!
    Ассемблер нужен только в очень редких случаях, например поменять регистры при переключении контекста при разработке мультизадачной RTOS, написании критической секции IRQ до вызова обработчика или при портировании на новую платформу для заполнения таблицы таймингов, или поправить регистры при вызове C-кода. Да и во всех этих случаях все уже написано, нужно будет исправить только пару-тройку мест, да и то, если новый чип с новой архитектурой. Да, еще знание ассемблера нужно, если разработываете свой компилятор языка высокого уровня на совершенно новую архитектуру.
    Во всех остальных случаях ассемблер не нужен, никогда. Так как он прекрасно генерится практически любым современным компилятором с любого языка высокого уровня.
    Наверное единственное исключение, совсем уж маленькие микропроцессоры, да и здесь я бы сильно поспорил.
    Времена, когда драйверы, операционки и программы писались на ассемблере, прошли безвозвратно.

    Что касается рынка программирования для микропроцессоров - он огромен. Только в здании, где мы арендуем площади, с десяток фирмочек заняты разработкой собственных железок под всяко разно. Начиная от электронных замков, и заканчивая обработкой радарных данных.
    Ответ написан
    2 комментария
  • Почему модуль socket в python обрезает данные при приеме независимо от параметра в функции recv?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Просто вы неправильно эти данные принимаете. Если посмотреть описание функции recv, то она возвращает реально принятые данные, которые могут быть порезаны. В вашем случае нужно в цикле принимать данные, пока не будет достигнута нужная длина. А еще лучше, сделать заголовок, в котором будет храниться длина пакета, сначала принимаете заголовок, потом в цикле принимаете данные на нужную длину. Tcp гарантирует, что данные не перемешаются и будут приходить последовательно, но протокол не гарантирует, что данные будут приходить ровно теми же самыми кусками, которыми они были отправлены.
    Ответ написан
    Комментировать
  • Как сделать систему безопасности виртуальных машин?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Хорошо, а если я под виртуалкой буду запускать net/freebsd, windows, dos, os/2 прости господи? Увы и ах, контролировать виртуалку можно только косвенными путями, если у нас нет полного представления что гость назапускал:
    - по файловой системе и/или дисковому обмену, да и то, если гость не использует криптографию на диске;
    - сетевому трафику, и опять же, если гость его не шифрует, или там tor не запускает.
    - конечно же можно с помощью vd-x и vd-t смотреть содержимое регистров и памяти, отлавливать всякое I/O.
    Но это же все начинает напоминать игру в ревресинжиниринг кода с получением ключей доступа к какому нибудь платному приложению. Вроде бы приложение и запущено у нас в системе, только ключей требует для совего запуска. Вроде бы как и наш компухтер, а не мы хозяева-то приложения. И дебагеры вроде как можем запускать и менять регистры всякие, только хрен там...
    Что-то не нравится мне такая тема диплома...
    PS. Я вот тут намедни запускал Windows NT4.0 SP3 в виртуалке. Запустилось, грустное это занятие, скажу я вам... Драйверов нет, проброс старых PCI-плат - ужас. Новые не работают, драйверов нет, да и ПО их не поддерживает. Сама NT еще та девочка с косичками из фильмов Хичкока...
    Ответ написан
    Комментировать
  • Чем отличается JDBC от ORM?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    JDBC- интерфейс для sql-запросов. Работаете с голыми sql-запросами и оперируете таблицами, строками, колонками и значениями. Если результаты запроса нужно положить с объекты, то сами их туда распихиваете.
    ORM - интерфейс для мапинга классов на таблицы, строки, колонки и значения базы данных. Работаете с java-объектами, sql-запросы за вас формирует ORM. Другими словами, не задумываетесь (почти), каксоставить sql-запрос, вытащить из него данные и раскидать значения по своим классам.
    Предпочтительнее конечно работать с ORM, так как все за вас будет оптимизировано и закешировано. Конечно, нужно будет знать, не только как работает ваша база данных, но и как работает ваш ORM.
    Ответ написан
    Комментировать
  • Какую структуру данных выбрать для хранения данных в памяти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А зачем непосредственно в приложении это делать? Возьмите, к примеру, redis.io, в нем и храните. Там не только sortedset, но и hash и и сounters и еще кучу всего реализовано. Работает быстро, лежит в памяти, кластеризуется и шардируется.

    В вашем случае удобней было бы держать ваши атрибуты в sortedset, где имя коллекции = атрибут, а значениями - id пользователей.
    Ответ написан
    Комментировать
  • Где хранят вызовы функций нормальные люди?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Товарищ VoidVolker очень правильно все расписал.

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

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Ответ написан
    Комментировать