• Авторизация


Демо под Windows lj_ru_programming 17-02-2018 13:32


Год сижу без работы, совсем разучился программировать.

Хочу написать несложную демку. Нужно выводить отрендененное видео в окно покадрово (желательно с синхронизацией развёртки), типа как видеоплееры делают, а также и звук, и чтобы он шёл синхронно с видео.

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

Кроме того, эту демку я хочу после отладки записать в видеофайл, пережать и выложить на youtube. Не с экрана захватывать, разумеется, а каким-нибудь API.

Дайте какой-нибудь несложный исходник на C++ под Windows, требующий минимум сторонних библиотек (лучше на основе доступного в Windows API типа DirectX), откуда этот готовый "скелет" можно было бы выдрать.

https://ru-programming.livejournal.com/1364469.html

комментарии: 0 понравилось! вверх^ к полной версии
Что изучить чтобы грести бабло? lj_ru_programming 20-11-2017 15:15


Какие языки/технологии изучить, чтобы выгребать максимум бабла при константных затратах, и не тратить годы на поиск заказчика/работодателя? Какую область/специализацию предпочесть? В рамках разумного: полгода-год на усвоение. Какой вообще алгоритм достижения максимального дохода? Интернет или десктоп? Фулл-стэк или специализация? Фриланс или работа на дядю? Нужно ли заморачиваться git-профилем и колбасить забесплатно опенсорс? Как найти нормального заказчика или дядю? Имеет ли смысл взять в подчинение пару студентов-балбесов, или одному проще?

Или тупо попытаться устроиться в гугл/микрософт/амазон, и только в случае неудачи предпринимать что-то иное?

https://ru-programming.livejournal.com/1364210.html

комментарии: 0 понравилось! вверх^ к полной версии

Освоить Windows GUI: с чего начать? lj_ru_programming 19-11-2017 16:02


Так уж получилось, что с поступлением на физфак активно дрючиться программированием я перестал, и так и не успел освоить создание GUI программ под Винду. Хотя я читал исходники чужих программ, реверс-инженерил много всего, и какое-то представление о сообщениях, Windows GDI и т.п. имею. В те времена мода на OWL уже ушла. Программы либо использовали вызовы GDI напрямую, либо полагались на MFC. Диалоги рисовались в спецрисовалках, клались в ресурсы, и оттуда загружались готовые. Была ещё пионерская игрушка Delphi, которая хранила формы в пикселях вместо диалоговых единиц, отчего при нестандартных установках размерах шрифта всё съезжало, поэтому её я никогда всерьёз не воспринимал. С другой стороны, если украшать диалоги картинками, то и у правильного метода были проблемы. Ещё тогда была мода рендерить изображения окна полностью самостоятельно, со всякими градиентами, гладкими углами и т.п., и выводить готовую картинку.

Но с тех пор прошло 20 лет. Появились GDI+, Direct2D, и хрен пойми что ещё. С другой стороны, народились всякие Qt, GTK, wxWidgets. А я, в свою очередь, решил бросить физику и податься в программисты. Но невозможность создать законченную программу от и до (в частности, из-за отставания в области интерфейса) сильно сдерживает мою программистскую карьеру.

Итак, в какой последовательности советуете осваивать новое? Исходники каких программ почитать для примера? Судя по тому, что я читал о GDI+ и Direct2D, внутри та же самая модель событий и полученный по окну HDC, изменились только вызовы отрисовки. Direct2D отсутствует на XP (что всё в меньшей степени, но ещё, думаю, актуально). GDI+ ругают за тормоза и вырвиглазный рендеринг текста. А все эти Qt монструозны, и мне, как человеку со стороны, непонятно чего дающие.

Или же вообще забросить к чертям C++ и выучить C#, в котором, я слышал, дофига встроено всего готового? Некоторые, вроде бы, делают интерфейс в HTML и показывают как страницу. Или это можно и через C++ делать тоже без особых трудностей? Впрочем, в области HTML и JS я тоже за 20 лет сильно отстал. Стоит ли навёрстывать?

В общем, если делать законченную программу, то на чём лучше основывать интерфейс?

https://ru-programming.livejournal.com/1363911.html

комментарии: 0 понравилось! вверх^ к полной версии
Без заголовка lj_ru_programming 27-09-2017 22:17


Что использовать для локального хранения и индексации блогов?

Условно подписка на несколько сотен блогов. Нужно хранить все записи и комментарии за последние, скажем, пять-десять лет.

SQL/NoSQL? JSON/XML? SQLite/UnQLite/LiteDB/whatever?

Клиентская система — Windows.

Нужно что-то типа Elasticsearch, только не сервер и WebApi, а в идеале клиентская библиотека под .NET с минимумом рабочих возможностей поиска и хранения.

Ну и чтобы не было ситуации, когда через год проект загнулся/коммерциализировался/перестал развиваться.

Собираю любые идеи.

https://ru-programming.livejournal.com/1363504.html

комментарии: 0 понравилось! вверх^ к полной версии
Помогите с темой диплома! lj_ru_programming 27-09-2017 22:17


Почти каждый сталкивается с этой проблемой и меня она не обошла… Нужна определенность в жизни… В любой непонятной ситуации нужно писать диплом)
Специальность - "Прикладная информатика в менеджменте".
Думала над темой "Бизнес-планирование проектов" (что-то в этом роде), но руководитель забраковал и посоветовал подумать о теме "Информационное обеспечение ..." (всяких производств).
Расскажите, как вы начинали этот путь, ваши темы? Спасибо за помощь!

https://ru-programming.livejournal.com/1363237.html

комментарии: 0 понравилось! вверх^ к полной версии
Инструмент для разбирательства в чужом C++ кода lj_ru_programming 30-05-2017 08:02


На нашей работе много так себе написанного C++ кода и очень мало документации.

У меня большой опыт использования одной очень известной тулзы для reverse-engineering. Её особенность в том, что перед заголовком функции она показывает так называемые XREF'ы, т.е. места, откуда эта функция вызывается. На них можно нажать и попасть туда, там опять нажать на XREF или вызов функции, всё кладётся как бы в стек, и потом по шагам можно возвращаться обратно.

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

https://ru-programming.livejournal.com/1363168.html

комментарии: 0 понравилось! вверх^ к полной версии
Инструмент для разбирательства в чужом C++ кода lj_ru_programming 30-05-2017 08:02


На нашей работе много так себе написанного C++ кода и очень мало документации.

У меня большой опыт использования одной очень известной тулзы для reverse-engineering. Её особенность в том, что перед заголовком функции она показывает так называемые XREF'ы, т.е. места, откуда эта функция вызывается. На них можно нажать и попасть туда, там опять нажать на XREF или вызов функции, всё кладётся как бы в стек, и потом по шагам можно возвращаться обратно.

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

http://ru-programming.livejournal.com/1363168.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по swing lj_ru_programming 13-03-2017 21:33


Есть такой код.

import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXTaskPane;



LayoutManager lm = panel.getLayout();


FlowLayout fl = (FlowLayout) lm;

JXTaskPane pane2 = new JXTaskPane();
pane2.setTitle("pane2");
JXLabel label = new JXLabel();
JTextField textField = new JTextField();
textField.setText("value");
label.setText("label");
label.setHorizontalAlignment(Label.LEFT);
pane2.add(label);
pane2.add(textField);

JXTaskPane pane3 = new JXTaskPane();

JLabel label2 = new JLabel();
label2.setText("label2");
pane3.add(label2);
pane3.setTitle("pane3");
label2.setHorizontalAlignment(JXLabel.LEFT);
panel.add(pane2);
panel.add(pane3);
showThis();
В итоге, два диалога pane2 и pane3 выводятся рядом. Я хочу, чтобы они выводились один под другим. Пытался ставить выравнивание по левому краю в дayout manager-е - они выводятся у правого края родительской панели, но все равно один справа от другого. Что мне могут посоветовать коллеги?

Заранее спаисбо.

https://ru-programming.livejournal.com/1362776.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по swing lj_ru_programming 13-03-2017 21:33


Есть такой код.

import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXTaskPane;



LayoutManager lm = panel.getLayout();


FlowLayout fl = (FlowLayout) lm;

JXTaskPane pane2 = new JXTaskPane();
pane2.setTitle("pane2");
JXLabel label = new JXLabel();
JTextField textField = new JTextField();
textField.setText("value");
label.setText("label");
label.setHorizontalAlignment(Label.LEFT);
pane2.add(label);
pane2.add(textField);

JXTaskPane pane3 = new JXTaskPane();

JLabel label2 = new JLabel();
label2.setText("label2");
pane3.add(label2);
pane3.setTitle("pane3");
label2.setHorizontalAlignment(JXLabel.LEFT);
panel.add(pane2);
panel.add(pane3);
showThis();
В итоге, два диалога pane2 и pane3 выводятся рядом. Я хочу, чтобы они выводились один под другим. Пытался ставить выравнивание по левому краю в дayout manager-е - они выводятся у правого края родительской панели, но все равно один справа от другого. Что мне могут посоветовать коллеги?

Заранее спаисбо.

http://ru-programming.livejournal.com/1362776.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по JNI lj_ru_programming 10-01-2017 19:13


Пытаюсь запустить java-ское приложение из-под eclipse. При старте оно пытается подгрузить jni библиотеки. Получаю exception-ы вида:
java.lang.UnsatisfiedLinkError: /home/user/workspace/myapp/extlibs/linux64/libsecond.so: libfirst.so: cannot open shared object file: No such file or directory
При этом я вижу в том же каталоге, что и libsecond.so, файл libfirst.so. У него есть права на исполнение. В чем может быть проблема? Ubuntu, eclipse.

https://ru-programming.livejournal.com/1362584.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по JNI lj_ru_programming 10-01-2017 19:13


Пытаюсь запустить java-ское приложение из-под eclipse. При старте оно пытается подгрузить jni библиотеки. Получаю exception-ы вида:
java.lang.UnsatisfiedLinkError: /home/user/workspace/myapp/extlibs/linux64/libsecond.so: libfirst.so: cannot open shared object file: No such file or directory
При этом я вижу в том же каталоге, что и libsecond.so, файл libfirst.so. У него есть права на исполнение. В чем может быть проблема? Ubuntu, eclipse.

http://ru-programming.livejournal.com/1362584.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по swing, ,часть 2 lj_ru_programming 28-12-2016 21:19


В общем, с помощью полученных советов у меня получилось нарисовать tree view. Проблем теперь две
1. Контрол для редактирования не переключается обратно, на контрол для показа.
2. Когда я все-таки вышел обратно, нажав Esc, данные не поменялись на отредактированные.

Заранее благодарен за советы.

https://ru-programming.livejournal.com/1362215.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по swing, ,часть 2 lj_ru_programming 28-12-2016 21:19


В общем, с помощью полученных советов у меня получилось нарисовать tree view. Проблем теперь две
1. Контрол для редактирования не переключается обратно, на контрол для показа.
2. Когда я все-таки вышел обратно, нажав Esc, данные не поменялись на отредактированные.

Заранее благодарен за советы.

http://ru-programming.livejournal.com/1362215.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по java(swing) lj_ru_programming 26-12-2016 20:27


Есть такой класс JTree. Как я понял, он предназначен для отображения иерархической tree view. Он позволяет заменять всякие пошлые иконки нормальными человоеческими вью, с возможностью их редактировать. Но я не вполне понимаю как сделать так, чтобы разным итемам соотвтетствовали вью разных типов. Скажите, это вообще возможно? Если да, то как это сделать, если CellEditor устанваливается один раз для всего tree?

Заранее благодарен

https://ru-programming.livejournal.com/1361978.html

комментарии: 0 понравилось! вверх^ к полной версии
Вопрос по java(swing) lj_ru_programming 26-12-2016 20:27


Есть такой класс JTree. Как я понял, он предназначен для отображения иерархической tree view. Он позволяет заменять всякие пошлые иконки нормальными человоеческими вью, с возможностью их редактировать. Но я не вполне понимаю как сделать так, чтобы разным итемам соотвтетствовали вью разных типов. Скажите, это вообще возможно? Если да, то как это сделать, если CellEditor устанваливается один раз для всего tree?

Заранее благодарен

http://ru-programming.livejournal.com/1361978.html

комментарии: 0 понравилось! вверх^ к полной версии
Оптимизация функции на С++ STL lj_ru_programming 25-12-2016 23:54


Побывал на днях на собеседовании (С++) и дали там задание оптимизировать функцию типа такой.

Employee findEmployee(vector< Employee > data, string addr) {
for (auto it = data.begin(); it != data.end(); it++) {
if (it->m_addr == addr)
return it;
}
}


Что я перечислил:

  • изменение асимптотической сложности на O(log(n)) c map или на O(1) с unordered_map, если память позволяет, но оказалось, что алгоритм менять не предполагается;

  • передача входных и выходных параметров по ссылке;

  • замена it++ на ++it;

  • вынос конечного итератора в константу const auto itend = data.end() и сравнение итератора с ней.


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

https://ru-programming.livejournal.com/1361776.html

комментарии: 0 понравилось! вверх^ к полной версии
Оптимизация функции на С++ STL lj_ru_programming 25-12-2016 23:54


Побывал на днях на собеседовании (С++) и дали там задание оптимизировать функцию типа такой.

Employee findEmployee(vector< Employee > data, string addr) {
for (auto it = data.begin(); it != data.end(); it++) {
if (it->m_addr == addr)
return it;
}
}


Что я перечислил:

  • изменение асимптотической сложности на O(log(n)) c map или на O(1) с unordered_map, если память позволяет, но оказалось, что алгоритм менять не предполагается;

  • передача входных и выходных параметров по ссылке;

  • замена it++ на ++it;

  • вынос конечного итератора в константу const auto itend = data.end() и сравнение итератора с ней.


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

http://ru-programming.livejournal.com/1361776.html

комментарии: 0 понравилось! вверх^ к полной версии
svg lj_ru_programming 08-12-2016 22:32


а подскажите люди добрые, чем парсить svg?

что хочется получить: хочется руками не очень вникая в устройство того svg, что выдает инкскейп, получить "программу" для репрапа на языке г-код, который, по сути, состоит из "задать толщину линии, температуру головки/подложки, скорость; дождаться прогрева; тупо подряд отрисовать набор отрезков, в каждом выдавая еще и 4ю координату - подачу пластка".

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

ну или подскажите похожий плагин к инкскейпу. под переделку.

и да, нужен именно вектор. при растеризации через слайсер вечно идут проблемы с "ажурными решетками" и прочими кружевами, когда в ширину линии получается не 2 или 3, а 2.5 колбаски и щель между ними.

https://ru-programming.livejournal.com/1361628.html

комментарии: 0 понравилось! вверх^ к полной версии
svg lj_ru_programming 08-12-2016 22:32


а подскажите люди добрые, чем парсить svg?

что хочется получить: хочется руками не очень вникая в устройство того svg, что выдает инкскейп, получить "программу" для репрапа на языке г-код, который, по сути, состоит из "задать толщину линии, температуру головки/подложки, скорость; дождаться прогрева; тупо подряд отрисовать набор отрезков, в каждом выдавая еще и 4ю координату - подачу пластка".

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

ну или подскажите похожий плагин к инкскейпу. под переделку.

и да, нужен именно вектор. при растеризации через слайсер вечно идут проблемы с "ажурными решетками" и прочими кружевами, когда в ширину линии получается не 2 или 3, а 2.5 колбаски и щель между ними.

http://ru-programming.livejournal.com/1361628.html

комментарии: 0 понравилось! вверх^ к полной версии
svg lj_ru_programming 08-12-2016 22:32


а подскажите люди добрые, чем парсить svg?

что хочется получить: хочется руками не очень вникая в устройство того svg, что выдает инкскейп, получить "программу" для репрапа на языке г-код, который, по сути, состоит из "задать толщину линии, температуру головки/подложки, скорость; дождаться прогрева; тупо подряд отрисовать набор отрезков, в каждом выдавая еще и 4ю координату - подачу пластка".

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

ну или подскажите похожий плагин к инкскейпу. под переделку.

и да, нужен именно вектор. при растеризации через слайсер вечно идут проблемы с "ажурными решетками" и прочими кружевами, когда в ширину линии получается не 2 или 3, а 2.5 колбаски и щель между ними.

http://ru-programming.livejournal.com/1361628.html

комментарии: 0 понравилось! вверх^ к полной версии