?

Log in

No account? Create an account
Программизм's Journal
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Программизм's LiveJournal:

[ << Previous 20 ]
Saturday, February 17th, 2018
5:31 pm
[kray_zemli]
Демо под Windows
Год сижу без работы, совсем разучился программировать.

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

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

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

Дайте какой-нибудь несложный исходник на C++ под Windows, требующий минимум сторонних библиотек (лучше на основе доступного в Windows API типа DirectX), откуда этот готовый "скелет" можно было бы выдрать.
Monday, November 20th, 2017
3:15 pm
[kray_zemli]
Что изучить чтобы грести бабло?
Какие языки/технологии изучить, чтобы выгребать максимум бабла при константных затратах, и не тратить годы на поиск заказчика/работодателя? Какую область/специализацию предпочесть? В рамках разумного: полгода-год на усвоение. Какой вообще алгоритм достижения максимального дохода? Интернет или десктоп? Фулл-стэк или специализация? Фриланс или работа на дядю? Нужно ли заморачиваться git-профилем и колбасить забесплатно опенсорс? Как найти нормального заказчика или дядю? Имеет ли смысл взять в подчинение пару студентов-балбесов, или одному проще?

Или тупо попытаться устроиться в гугл/микрософт/амазон, и только в случае неудачи предпринимать что-то иное?
Sunday, November 19th, 2017
4:02 pm
[kray_zemli]
Освоить Windows GUI: с чего начать?
Так уж получилось, что с поступлением на физфак активно дрючиться программированием я перестал, и так и не успел освоить создание 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 лет сильно отстал. Стоит ли навёрстывать?

В общем, если делать законченную программу, то на чём лучше основывать интерфейс?
Monday, May 29th, 2017
5:55 pm
[elexandra]
Что использовать для локального хранения и индексации блогов?

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

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

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

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

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

Собираю любые идеи.
Wednesday, September 27th, 2017
10:25 am
[a_irrational]
Помогите с темой диплома!
Почти каждый сталкивается с этой проблемой и меня она не обошла… Нужна определенность в жизни… В любой непонятной ситуации нужно писать диплом)
Специальность - "Прикладная информатика в менеджменте".
Думала над темой "Бизнес-планирование проектов" (что-то в этом роде), но руководитель забраковал и посоветовал подумать о теме "Информационное обеспечение ..." (всяких производств).
Расскажите, как вы начинали этот путь, ваши темы? Спасибо за помощь!
Tuesday, May 30th, 2017
12:02 pm
[kray_zemli]
Инструмент для разбирательства в чужом C++ кода
На нашей работе много так себе написанного C++ кода и очень мало документации.

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

Хочется подобного, но не для бинарников, а для C++ исходного кода. Что-то типа специализированного статического анализатора. Чтобы быстрым нажатием нескольких кнопок узнать, где используются поля структуры, откуда вызывается функция или метод, в т.ч. виртуальный, где создаётся экземпляр класса, и т.п. Полнотекстовый поиск не всегда хорошо справляется, даёт ложные совпадения (одноименные методы в разных классах и т.п.), и вообще, недостаточно автоматизирует процесс.
Monday, March 13th, 2017
9:33 pm
[m_f]
Вопрос по swing
Есть такой код.
Collapse )
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-е - они выводятся у правого края родительской панели, но все равно один справа от другого. Что мне могут посоветовать коллеги?

Заранее спаисбо.
Tuesday, January 10th, 2017
7:13 pm
[m_f]
Вопрос по JNI
Пытаюсь запустить 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.
Wednesday, December 28th, 2016
9:19 pm
[m_f]
Вопрос по swing, ,часть 2
В общем, с помощью полученных советов у меня получилось нарисовать tree view. Проблем теперь две
1. Контрол для редактирования не переключается обратно, на контрол для показа.
2. Когда я все-таки вышел обратно, нажав Esc, данные не поменялись на отредактированные.

Заранее благодарен за советы.
Monday, December 26th, 2016
8:27 pm
[m_f]
Вопрос по java(swing)
Есть такой класс JTree. Как я понял, он предназначен для отображения иерархической tree view. Он позволяет заменять всякие пошлые иконки нормальными человоеческими вью, с возможностью их редактировать. Но я не вполне понимаю как сделать так, чтобы разным итемам соотвтетствовали вью разных типов. Скажите, это вообще возможно? Если да, то как это сделать, если CellEditor устанваливается один раз для всего tree?

Заранее благодарен
Saturday, December 24th, 2016
10:16 am
[saotome_kun]
Оптимизация функции на С++ STL
Побывал на днях на собеседовании (С++) и дали там задание оптимизировать функцию типа такой.

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, исходя из разрядности целевой платформы.
И все. Но от меня ждали чего-то еще. Напишите пожалуйста, если знаете или догадались что именно? Я в непонятках.
Thursday, December 8th, 2016
10:32 pm
[nicka_startcev]
svg
а подскажите люди добрые, чем парсить svg?

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

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

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

и да, нужен именно вектор. при растеризации через слайсер вечно идут проблемы с "ажурными решетками" и прочими кружевами, когда в ширину линии получается не 2 или 3, а 2.5 колбаски и щель между ними.
Friday, November 4th, 2016
3:59 am
[m_f]
вопрос по C++
Мне немного стыдно за такой тупой вопрос, но я что-то не соображу, как быть.
Есть чисто виртуальный класс Base с чисто виртуальным методом, например void func(). От него унаследован класс Derived, где этот метод определен. Есть метод в некоем классе, который берет vector<Base>.

Вопрос: как скормить этому методу vector<Derived>?
Friday, October 28th, 2016
7:23 pm
[m_f]
Вопрос о boost(C+)
Краткое содержание предыдущих серий: в предыдущем посте меня убедили использовать boost.
Я подключил в свой проект boost/filesystem, добавил параметр -lboost_system и пытался его построить. В ответ была получена ошибка cannot find -lboost_system. Предварительно я построил boost и добавил фолдер D:/boost1_62 в пути для линкера. Как я понимаю, гду-то должен быть файл libboost_system.o, но я его нигде не нашел.
Вопрос: что я делаю не так и как это исправить?
UPD. Решено. Оказывается, реально оно называется не boost_system, а boost_system-mgw49-mt-1_62.
Monday, October 24th, 2016
3:36 pm
[m_f]
вопрос по C++
Вопрос, чтобы не изобретать велосипед. Вот в Java есть прикольный класс File, сс помощью, которого, в частности, можно переходить от абсолютных путей к относительным. А есть что-нибудь подобное в C++? Я, конечно, могу и свой велосипед написать, но вдруг оно уже есть.
Thursday, October 20th, 2016
11:18 pm
[nicka_startcev]
gnu plot
а подскажите люди добрые как гнуплот готовить

1. есть у меня в квартире куча термодатчиков. иногда они долго показывают одну и ту же температуру, тогда гнуплот начинает ворнинговать, что по оси У ноль, всё плохо. как задать именно разность температур, а не диапазон?
2. можно ли тупо подавить этот ворнинг, не давя другие?
3. гнуплот любит красиво ставить метки далеко друг от друга. можно ли заставить его ставить метки в 4 раза чаще? не через каждые 1/16 градуса, а именно в 4 раза чаще, чем по умолчанию?

а может стОит заменить гнуплот чем-то более удобным? на входе текстовый файл в формате "дата время т1 т2 т3 т4" или "дата время т1" из которого хочется видеть график температур в виде картинки (чтоб отобразить на вебстраничке), и это сидит в крон(таб)е.
Monday, October 17th, 2016
3:26 am
[m_f]
Вопрос по STL(C++)
Допустим, есть multimap<string, int>. Как грамотно просуммировать все значения? Как пробежать все значения? Я спрашиваю именно про multimap. С обычным map-ом никогда проблем не было, а mutlimap использовать не приходилось.
Заранее спасибо.
Saturday, October 15th, 2016
6:20 pm
[m_f]
Вопрос по algorithm(C++)
Есть map<time_t,string>. Хочу скопировать только те записи, которые соответствуют определенному string.
map<time_t, string>
Написал код:
copy_if(times.begin(),times.end(),copyTimes.begin(),[&Name](pair<time_t,string> curPair)->bool
{
return (curPair.second == Name);
});
При компиляции выдается ошибка:

assignment of read-only member 'std::pair
[Error: Irreparable invalid markup ('<const [...] std::basic_string<char>') in entry. Owner must fix manually. Raw contents below.]

Есть map&lt;time_t,string&gt;. Хочу скопировать только те записи, которые соответствуют определенному string.
map&lt;time_t, string&gt;
Написал код:
copy_if(times.begin(),times.end(),copyTimes.begin(),[&Name](pair&lt;time_t,string&gt; curPair)->bool
{
return (curPair.second == Name);
});
При компиляции выдается ошибка:

assignment of read-only member 'std::pair<const long long int, std::basic_string<char> >::first'.

Не понимаю в чем дело. Я ж сравниваю, а не присваиваю нифига. Попробовал сделать лямбду mutable - не помогает, та же ошибка.
В чем причина и что делать?
Thursday, October 13th, 2016
12:10 pm
[nicka_startcev]
чтение файла fuse/owfs
несколько странный вопрос - а как в линуксе правильно читать (псевдо)файл?

читаю свежие показания 1-варь термометра через owfs который через fuse.
иногда читается быстро, а иногда тупит.

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

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

ps: таки да, с/с++, линух, х86, 32бит.
Sunday, October 9th, 2016
3:54 am
[m_f]
Вопрос по STL
Программа падает при попытке добавить в std::map данные. Код приводится ниже
Есть класс,в котором есть map. объявленный статическим полем.
static map<int, DataKeeper*> typeKeepers;
В сишнике оно инициализируется:
static map<int, DataKeeper*> typeKeepers;
Далее, есть вызов статического метода:
DataKeeper DataKeeper::getKeeper (int type)
{
cout<<"getDataKeeper enter"<<::iterator it;
map::iterator it;
DataKeeper* result;
it = keepers.find(type);
if (it == keepers.end())
{
int size;
result = new DataKeeper();
size = sizeof(result);
keepers[type] = result;
}
Проходя по шагам я увидел, что оно не находит значения(что вполне логично - это первый вызов) и пытается добавить указатель в map. Вот на этом добавлении оно и падает. Конкретно на этой строке. Компилятор MinGW.
В чем дело?
Заранее спасибо за любые конструктивные советы.
UPD. Всем спасибо, разобрался. Только сейчас добрался до сети, прошу прощения. Оказалось, вызов идёт раньше, чем map создаётся. После 3 лет на джаве отвык от того, что при обращении к не существующему объекту что-то ещё может дышать, если в этот объект ничего не писать.
[ << Previous 20 ]
RU PROGRAMMING   About LiveJournal.com