Задать вопрос
Ответы пользователя по тегу Программирование
  • Какую область программирования выбрать PHP или Java?

    @rPman
    в данном случае язык определит направление дечятельности

    php - это безоговорочно веб и бакэнд, еще на нем можно (удобно) писать скрипты автоматизации и даже какую то аналитику по данным, т.е. если требуются не крупные проекты а множество временных и небольших - то плюсы php выходят вперед

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

    то о чем в вопросе не было спрошено:

    python - если тебе надо работать с данными, как опция - нейронные сети и т.п. (тоже вполне востребованный кейс, все сразу захотели в маркетинг играть или чего то автоматизировать и соптимизировать на работниках)

    javascript - занял очень интересную позицию в мире, благодаря nodejs он может быть как web бакендом, так и способом разработки браузерного интерфейса на стороне клиента, так и десктопные приложения (electron, чтоб его...) и даже как язык для unity игрового движка, т.е. получается язык получает статистический прирост с нескольких областей а не одной как остальные.
    У языка есть недостаток - как и у php (но он старается избавиться от этого) - свободная типизация, странная реализация ООП и другой синтаксический сахар типа асинхронности (это кстати его плюсы) увеличивают шансы выстрелить себе в ногу и усложняют поддержку проекта на долгосрок (там вообще много где проблем найти, как пример, берешь любой проект с гитхаба с датой последнего комита 3-4 года и пробуешь его обновить и поддержать, советую посмотреть что аудит безопасности npm будет вам писать).

    c# - надо ставить рядом с java (он и .net и создавался майкрософтом как главный конкурент), так же благодаря unity движку, захватывает часть статистики из геймдева. К сожалению, выбор языка гвоздями (да есть способы освободиться, но за все приходится платить и чего то лишаться) прибивает разрабатываемый продукт к майкрософтовской экосистеме, за который бизнесу приходится платить неплохой 'налог', поэтому если у тебя не unity то скорее всего ты либо поддерживаешь какое то легаси либо... ну мне нравится на .net формочки к базе данных делать, нигде такого легкого инструмента который дает ms visual studio и .net - нету, но, если прямо так хочется, там можно и на python.net писать, и на c++.net, и вообще какая разница какой язык программирования, в мире разработчика главенствуют фреймворки и среды разработки.
    Это я к чему - найти деньги с этими знаниями можно только по везению.

    Все остальные языки типа R, Rust, go и прочая экзотика - это издевательства над работодателями.. т.е. если ты найдешь по ним работу, это значит работодатель стал заложником не шибко умного системного аналитика (или его отсутствие/совмещение с разработчиком, который для самообразования решил приколоться), т.е. еще большее везение, делать ставку на это я бы не стал. Хотя для самообразования учить Rust или go очень даже неплохо, много открытых проектов пилят именно на go, вполне возможно, когда в мире количество разработчиков наберется до некоторой критической массы, это станет таким же мейнстримом как сейчас php или javascript.

    Так что еще раз - выбор языков программирования в порядке убывания оценки рекомендации (выше-вероятнее найти работу, кстати оценить уровень оплаты тут сложнее)
    php - и он теряет позиции, потому что SPA приложения захватывают мир
    javascript
    python
    - если не нужен вебдев - то это на первом месте
    java/c# (точнее .net)
    go

    если хочешь быть в вебе то php/javascript
    если хочешь в геймдев java/c#
    если хочешь датасайнс то python
    Ответ написан
  • Нужен совет опытных WEB разработчиков?

    @rPman
    Самый неправильный способ обучения - с конца. Это очень неэффективно если не бессмысленно, изучать программирование непоследовательно.

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

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

    Советую изучать с низов, самостоятельно, чтобы было понимание каждого шага, всего что происходит.
    * операционные системы, процессор и многопоточность, сети,...
    глубоко изучать это не требуется но базовые понимания нужны чтобы не получать медленное приложение только потому что не знал что каждый твой запрос в tcp это 'туда-сюда', и это медленно (десятки миллисекунд), что одновременно два человека пытающиеся что то изменить на сайте нужно разруливать чтобы не было конфликтов и т.п.
    * бакэнд и фронтэнд
    буквально что значит запрос и генерация ответа, какие бывают способы организации этого бакэнда (http rest и к примеру websocket), не понимание разницы между бакэндом и фронтэндом у новичков рождает абсурдные вопросы как из javascript изменить переменную php (и наоборот)... в чем разница между генерацией страницы на сервере и в браузере.
    * html, css,..
    верстка и дизайн, отдельный мир браузерных стандартов, исторических наслоений,. когда стоит применять фреймы, почему шрифты по разному выглядят, разные устройства и размеры экранов, разные способы взаимодействия (сенсорный экран, мышь, клавиатура)...
    * базы данных
    еще более огромный мир атомарных транзакций, индексов, нормальных форм и прочего
    * девопс
    без умения выбрать инструмент, настроить тулчейны, среду разработки, среду исполнения (веб сервер), настроить бакапы и прочее пытаться что то разрабатывать это как в слепую гулять по лесу, будешь постоянно на ветки натыкаться
    ...
    это я еще про системную аналитику не сказал, обычно прежде чем что то создавать, нужно продумать как это все делать, что такое технический долг и т.п., а еще есть тестирование, обслуживание, работа с отказами (сервер сдох, база упала, как все восстановить), обновление на живую и прочие веселья

    без понимания всего этого, даже поверхностного, будешь натыкаться на огромные дыры в разработке.
    Ответ написан
    7 комментариев
  • Как заставить код сравнивать ведённую информацию с базой данных?

    @rPman
    Все очень зависит от запросов.

    Самые простые запросы - поиск по конкретному значению, в sql запросе это выглядит select ... from ... where ПОЛЕ = 'значение'
    Как частный случай этого, выбор значения справочника (это такой список значений, обычно выделяют в таблицу с полями id,name а в целевой таблице оставляют идентификатор а не значение) в фильтрации where пишешь ПОЛЕ = идентификатор_из_справочника (в интерфейсе же ты можешь показывать не id а значения из справочника)

    Чуть по сложнее, это запрос по подстроке, как ни странно sql для этого подходит плохо, но если что есть запросы вида where ПОЛЕ like '%подстрока%', в зависимости от наличии % в начале и выбора типа индекса, такой запрос может перебирать все поля в базе или только те что нужно по индексу.

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

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

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

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

    p.s. если у тебя программа не требует какой либо графики, скорости и код и ее данные умещаются в десяток килобайт, то можешь хоть на бейсике написать
    Ответ написан
    Комментировать
  • Хочу писать приложения под Win10, что учить?

    @rPman
    microsoft visual studio, среда разработки, фреймворк и пакет языков c# (плюс managed c плюс vb# и т.п.), мощный комбаин, которого по уму будет достаточно для создания приложения люббого типа, от клиент-серверных до десктопных и мбоильных

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

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

    @rPman
    Реверсить протокол, судя по тому что говорящий сумел узнать url, и он http (не шифрованный), значит сделать это можно не занимаясь отладкой приложения (а это сразу понижает требования к уровню исполнителя), т.е. поставив любой снифер трафика или прозрачную прокси между приложением и сервером.

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

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

    upd. там помимо windows приложения, есть android apk версия, ее декомпиляция проще
    я натравил на него jbart и вижу что приложение написано на lua или очень активно его использует, их тоже можно декомпилировать (но пропатчить уже не получится), просто поиском указанных api http endpoint не увидел (возможно используется иной или как то не тривиально сокрыто)

    код огромный, под сотню мегабайт декомпилированных исходников, плюс полторы тысячи файлов luac
    Ответ написан
    Комментировать
  • Можно ли внутри дэсктопного приложения отследить был ли сделан скриншот?

    @rPman
    В общем случае это сделать невозможно, точно помню с помощью directx (наверняка и opengl/vulkan) можно получить прямой доступ к содержимому экрана или буферам видеокарты.

    На stackexchange посоветовали повеситься на события и анализировать память, буквально всю, в т.ч. на наличие хеадеров jpeg/png/....

    Т.е.запрет возможен только административными способами.
    Ответ написан
    Комментировать
  • Как сделать скриншот с одного компьютера на другой?

    @rPman
    Одно слово (абривиатура) - VNC.
    Это стандарт, одноименное приложение и библиотеки программирования, специально для таких задач, начиная с отправки на удаленный хост скриншотов и заканчивая удаленным управлением.

    Для браузера - https://developer.mozilla.org/ru/docs/Web/API/Scre...
    Ответ написан
    Комментировать
  • Как создать детектор чихания?

    @rPman
    Собираете данные обучающей выборки (сотню другую чихов, кашлей, хлопков в ладоши и просто фоновых звуков). Затем, с помощью готовых алгоритмов получаете спектр звука на интервале (2-3 длины типового чиха), и натравливаете на это дело нейронку.
    Ответ написан
    Комментировать
  • Как максимально сильно сжать игру для тату?

    @rPman
    У вас только два варианта - либо кодируйте цветом High Capacity Color Barcode что даст вам примерно пятикратную оптимизацию по площади, либо размещайте код ссылку вместо самого кода, но это не так интересно, само собой.

    Не вздумайте сделать глупость и нанести настоящее тату под кожу, те, рисуйте тату сверху с помощью переводных наклеек (точно знаю есть возможность печатать такие на принтере). Интересно и весело вам сейчас и максимум ближайшие несколько лет, а испорченная кожа - это на всю жизнь, так что допускаются только смываемые варианты.
    Ответ написан
    2 комментария
  • Можно ли выбрасывать исключение в предикатах?

    @rPman
    Проблема больше не когда исключение бросать, а когда ловить! В конкретно вашем примере вы должны будете поймать исключение, завершить операцию работы с файлами и продолжить выполнение.

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

    @rPman
    Если нет необходимости запускать свои приложения на сервере без интерфейса, т.е. например можно чтобы у вас был открыт браузер, то можно с помощью расширений браузера (или просто инжектить свой скрипт через консоль скрипт, если веб-приложение single page application) то вам хватит приложения на javascript, простого как валеннок.

    Например чтобы заполнить поле ввода текстом надо написать что то типа $('css selector контрола').value='блаблабла', кнопку нажать $('...').click( и т.п.)

    Достоинство подхода - сервер почти никак не сможет отличить ваше приложение от пользователя (только статистику и поведенческий анализ, та еще задача), и зачастую, небольшие изменения в коде на сервере требуют минимальных исправлений в ваших скриптах автоматизации или даже без, по сравнению с curl подходом (который требует полностью повторять запросы веб страницы к серверу, это обычно сложнее).

    Недостаток - веб-браузер требует больше ресурсов для работы (даже headless) на столько что например сотню ботов на одной машине можно уже не потянуть.
    Ответ написан
    Комментировать
  • Запуск скомпилированной программы на другой ubuntu?

    @rPman
    Для начала, примите как данность, в linux бинарник - не приложение, приложение - это запись в пакетном менеджере, с настроенными зависимостями.

    Вам необходимо кропотливо записать в зависимостях все необходимые библиотеки, скомпилировать с помощью кросскомпиляции, приложение под сразу несколько популярных платформ (i686/x86_64/может быть несколько arm), собрать deb/rpm пакеты, как минимум для нескольких популярных версий операционки (+для эстетов - ebuild) и вот только тогда считать что вы перенесли приложение на другой комп, иначе это геморой конечным пользователям.
    p.s. вы как разработчик сможете это сделать без особых проблем, так как ЗНАЕТЕ из чего ваше приложение состоит и чем пользуется.
    и да, тестировать все это на собранном минимальном debootstrap образе системы
    Ответ написан
    Комментировать
  • Какое направление лучше?

    @rPman
    На текущий момент в России университет имеет смысл не как источник диплома (бумаги, да на ее наличие смотрят, некоторые даже читают первые три слова специальности, чаще смотрят на факультет, если рекрутер сам учился там же) а как место, где есть возможность! научиться учиться.

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

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

    p.s. первое
    Ответ написан
    Комментировать
  • Почему глобальные переменные не принято использовать?

    @rPman
    грубо говоря - реентерабельность, написанный код должен не зависеть от того, запущен он уже или нет (я не говорю про логику приложения, а про заложенные изначально ограничения, при использования глобальных переменных)

    это одно из правил написания приложений, - вы не знаете, понадобится ли вам в будущем это или нет, но заранее не ограничиваете себя в этом, используя опасный подход в программировании.
    Ответ написан
    Комментировать
  • Как лучше хранить данные о трафике в БД?

    @rPman
    У вас проблема не с большими числами, bigint их решит, а большой объем данных, миллионы и миллиарды записей положат вашу базу и создадут охренительные проблемы в будущем
    Поэтому сразу закладывайте партиционирование таблиц по интервалам времени, причем не обязательно средствами базы данных, достаточно самим создавать новую таблицу для каждого следующего временного интервала (недели, месяцы - зависит от вашей нагрузки).

    почему вы хотите хранить простые линейные логи в БД?
    что еще вам нужно делать с данными кроме фильтрации и суммы?

    если всетаки храните в базе, то не создавайте индексов на такие поля как объем трафика и url, это наиглупейшая ошибка, во время записи в таблицу заранее считайте необходимые параметры, выделяйте важные данные из url, вычисляйте домен, ip (сегодня он один, завтра другой), собирайте суммы по трафику в отдельной табличке, если нагрузка позволяет, можете по ip считать (или по зонам), в итоге вы будете работать не с сырыми данными, а уже агрегированными и посчитанными, их на порядок меньше и они удобнее для использования.
    Ответ написан
    Комментировать
  • Для чего в Си ввели синтаксис указателя на массив?

    @rPman
    Для начала вопрос зачем в язык ввели понятие массив, а не остались с указателями - потому что типизация это добро. Т.е. на этапе компиляции можно будет понять, првильные ли переменные были переданы в функцию/метод, а так же можно узнать какой именно метод нужно использовать (методы с одинаковыми именами и разными типами параметров, плюс сюда в копилку темплейты С++)

    Соответственно чтобы не передавать весь массив в качестве копии в методы, завели понятие ссылка (она не только к массивам определена, но и к любым объектам)
    Ответ написан
  • Сравнение документов Word. Как реализовать?

    @rPman
    если работает только в word и это не разовая работа, то делать все средствами самого офиса, закодив логику на VB
    Ответ написан
    2 комментария
  • Что предпочтительнее, таблица-связь или несколько доп. поля?

    @rPman
    Практика показала, что в конечном счете сложные и универсальные property/value решения все равно разовьются до кеширования значений в полях рядом (совершенно нормально будет тригерами наполнять полупустые кеш-таблицы с 100500 полей).

    Т.е. для скорости вы все равно создадите эти поля (иначе реляционные базы ну оооооооооооочень медленные), но наличие property/value подхода развязывает руки и дает больше возможностей в будущем.
    Ответ написан
    Комментировать
  • Можно ли придумать новый алгоритм более быстрого нахождения нулей в "соли" блока?

    @rPman

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

    Ответ написан
    Комментировать