;)
  thinkIT.ru — первый IT-портал города  
 
 
Первый IT-портал города
 
 
Почта:
Пароль:
    Забыли пароль?
  Башковитый чувак



4G Лого
4G Лого

Рубрика: soft

44
Toolbar for ThinkIT

Toolbar for ThinkIT


Хотелось бы создать некий тулбар на тему ThinkIT (некая породия на вистовый), только соответственно с начинкой для работы с данным порталом.

Автор: Zoomskij | Добавлено: 13 Февраля, 2010 | Очень много комментариев | Просмотров: 867
Возможно я не совсем правильно подобрал название темы "Toolbar for ThinkIT", возможно ThinkIT никогда в нечто подобном и не нуждался, но лично мне было бы довольно интересно воплотить эту идею в жизнь, да ещё может быть это несколько "упростит" работу с сайтом. Хотя куда ещё проще скажите вы? Тут скорее даже не в простоте, а в навигации дело, окно в браузере с данным порталом вы открываете периодически (ИМХО), а вот тулбар может работать всегда, ИМХО больших помех он создавать не должен. Вот собственно выложу скриншот с началом разработок:


Функционал имеющийся и желаемый включить:
• Имеется (как вы уже заметили логотип) - функционала не предоставляет. Надо бы сделать, чтобы по нажатию на него попадали на сайт.
• Имеются бинарные часы (а какие же еще должны быть часы для Ай-Ти сайта?)
• Уже подготовлено поле для отлова сообщений из "мини-чата". Тут же предполагается их и добавление, и хранение. Что бы если вы чего-то пропустили, могли самостоятельно найти и прочитать упущенное. (сегодня эта проблема уже возникала). Хотя на сервере лог-сообщений должен храниться, но всё же из-за таких мелочей беспокоить администрации, было бы не логично.
• Тот же поиск можно было бы добавить.
• Последние созданные темы... вообщем всё-что угодно(темы, скины, плагины).

Технические характеристики:
Данный проект как вы уже могли заметить разрабатывается на С++ с подключением графической библиотеки OpenGL (которая кстати является кроссплатформенной) так что если проект получится в "окнах", то его можно будет запросто перекомпилировать и для того же Linux'a. Насчёт мака не знаю, не работал. Так что насчёт ccube и маколюбов не уверен, что у них заработает... И ещё раз повторюсь, не уверен, что данный проект будет востребован.
Так же по возможности использовал ассемблерные вставки, дабы уже на начальных этапах разработки хоть как-то оптимизировать код.

Проблемы останавливающие разработку данного тулбара:
• Ничтожные навыки работы с протоколом tcp/ip автора, тобишь меня.
• Так же не особые владения работы с окном в OpenGL
• Да и много еще чего :)

Вообщем жду критики, да и может быть каких-либо пожеланий. Наверное рано я за такой проект взялся. Но всё же наше будущее зависит в наших ошибках :)

Комментарии:

hws hws | 13 Февраля 22:42ссылка сюда
ух... нужно использовать кроссплатформенный .NET и не марочиться с OpenGL и не копать tcp/ip. Нужно юзать уже готовую большую библиотеку, именно для этого его и написали. А если хочется сделать что-то красивое, то WPF никто не мешает использовать.
Zoomskij Zoomskij | 13 Февраля 22:56ссылка сюдаответ на
чего-то это название .NET меня всё время отпугивало, и до сих пор оно в меня внушает какой-то странный ужас) И чего-то всё никак не могу сесть прочитать пару книг по .NET и развеять его. Возможно всё же стоит по-пробовать, а не довольствоваться как довольно-таки скудными возможностями OpenGL. мб они скудные только в неумелых руках.
xeon xeon | 13 Февраля 22:56ссылка сюдаответ на
Да, я тоже хотел про это написать.
it 3.0 it 3.0 | 13 Февраля 23:04ссылка сюдаответ на
1. не думаю что это хорошая идея для такого простого приложения использовать дотнет.
2. Мне крайне редко попадались прилично работающие приложения на дотнете.
3. И уж точно я не собираюсь ставить этого монстра на мак.

4. Все что выше, конечно, ИМХО
xeon xeon | 13 Февраля 23:14ссылка сюдаответ на
Да, кросплатформенность .net на маке сильно спорна :)
Чтобы запустить там xminder пришлось поставить X11, потом mono (100+ Мб для скачивания) и в конце-концов получить неработающий трей.
После чего написать трей на GTK+ и обломаться с отсутствием русских букв в некоторых частях приложения. А также огрести проблемы с одновременным использованием GTK+ и Winforms в одном процессе.
Так что удовольствие не для начинающих осваивать .net сделать работоспособное mac-приложение для .net.

Хотя можно попробовать на досуге Silverlight в режиме out of browser.

А прилично работающие приложения на .net есть, и их немало.
xeon xeon | 13 Февраля 22:56ссылка сюда
А зачем часы? В трее или на стене не хватает?

> Имеется (как вы уже заметили логотип) - функционала не предоставляет. Надо бы сделать, чтобы по нажатию на него попадали на сайт.
Используй CreateProcess или устаревший WinExec("http://thinkit.ru")

> Уже подготовлено поле для отлова сообщений из "мини-чата". Тут же предполагается их и добавление, и хранение
Да, прикольно. Хотя конечно концептуально правильно было бы веб-сервис такой сделать, если кнопку на thinkit повесить не вариант.

>Так же по возможности использовал ассемблерные вставки, дабы уже на начальных этапах разработки хоть как-то оптимизировать код.
Выбрось эту чушь из головы. Серьезно. Ассемблерные вставки далеко не всегда эффективнее кода на C/С++, особенно с учетом особенностей работы современных компиляторов и оптимизацией под актуальные архитектуры. Простейший вариант x = x/2 нужно именно так писать. Это просто и понятно. А комплилятор сам сделает shr 1.
Даже если ты на одном участке кода выиграешь 0.0003 секунды, это не покроет тот факт, что картинка у тебя будет лежать, скажем в bmp. Тупо за счет времени обращения к винту. И вообще пользуйся профайлером. Даже для опытных программистов часто очень удивительно обнаружить, что тормозит место "x", а совсем не место "y", где хотел оптимизировать. Очень правильный подход - написать так, чтобы работало, а потом прогнать все целиком профайлером и уже действительно проблемные места оптимизировать.
И проблемы со скоростью в головах и в используемых алгоритмах и подходах на глобальном уровне. А микрооптимизации нужно искоренять.
Я занимаюсь одним проектом. И с Delphi переписал его на "тормозном" C#. Он работает в 10 раз быстрее. (от 3 до 30 раз в зависимости от подсистемы). И уже после профайлера стало явно, что в одном классе (из сотен) нужно вместо 4х свойств с get/set методами поставить ОТКРЫТОЕ ПОЛЕ. Т.е тупо public-переменную. Несмотря на то, что это плохой тон, стиль и т.п. Потому что это эти свойства дергаются настолько часто, что это дает порядка 7% роста производительности в рамках всего проекта. Еще стало ясно, что если использовать чуть больше памяти и хранить 2 списка, упорядоченных по-разному, то можно получить еще +20%. И прочие тонкости.

Дальше (из скриншота). Почему i < 17, что такое i%6, и почему x-=22, почему часы умножаются на 4096, а минуты на 64? Забудь за "волшебные" значения. Используй константы.

>Ничтожные навыки работы с протоколом tcp/ip автора, тобишь меня.
А зачем знать tcp/ip для этого тулбара. Тебе просто нужно HTML прочитать и распарсить. Зачем для этого делать свою реализацию получения текста страницы на TCP/IP?


Зачем ВООБЩЕ всё делать на OpenGL на таком низком уровне с отрисовкой пикселей?

Опять же, собственная отрисовка интерфейса нужна только если абсолютно уверен, что это нужно. Я может быть список сообщений хочу прокручивать колесом мышки, а не нажимая мышкой на кнопки. Я вообще не люблю так делать. Или просто с клавиатуры вверх/вниз. Как этого добиться здесь?
P.S. Читай Стив Макконела "Совершенный код".
Zoomskij Zoomskij | 13 Февраля 23:02ссылка сюдаответ на
А зачем часы были нужны в вистовом тулбаре? i < 17, что такое i%6 = 64, чего вполне хватает для 60 минут/секунд + 5 бит на 24 часа и того 17. А зачем знать tcp/ip для этого тулбара. Тебе просто нужно HTML прочитать и распарсить. Зачем для этого делать свою реализацию получения текста страницы на TCP/IP? - Да я хотел попробовать сделать чего-то по типу сокетов, но эта идея уже отпадает, так как сервером должен быть сам сайт, а это уже не то... Зачем ВООБЩЕ всё делать на OpenGL на таком низком уровне с отрисовкой пикселей? - OpenGL всё является кросплатформенной библиотекой, вот я и подумал почему бы и не на ней это реализовать....
xeon xeon | 13 Февраля 23:05ссылка сюдаответ на
if ((i % 6) == 0)
Я понимаю, что это синтаксически означает. Но не понятно, почему именно на 6 делится.
И почему цикл должен исполниться 17 раз, из которых на 7м и 13м нужно сменить координаты.

И конечно я глобально разберусь, что это и есть отрисовка точек часов. А умножение выше, это хитро закодированное время в секундах, чтобы удобнее эти точки отрисовывать.

Upd: смысл ответа несколько изменился, но текст выше тоже поменялся.
Zoomskij Zoomskij | 13 Февраля 23:10ссылка сюдаответ на
Там ведь три линии, для часов, минут, секунд, вот оно и через каждые 6 и меняется... есть некоторое число допустим: 10111010111011 мы скидываем правый бит вправо, если он включен, то включается (флаг C - переполнения), если он включен отрисовываем включенный бит, если выключен, выключенный...
xeon xeon | 13 Февраля 23:19ссылка сюдаответ на
Конечно, почитав твой код минут 5, понять можно. Но хороший код - это такой код, назначение которого ясно с первого взгляда.

А твоя asm-вставка...
Ну посчитай сам. Как часто оно вызывается? Раз в секунду? А сколько микросекунд оно выполняется? По сравнению с отрисовкой пикселей. Вообще пренебрежимо мало. Зато читаемость упала просто в разы.
А можно было сделать переменные hour, minute, second, функцию, которая на вход получает переменную с циферкой и это отрисовывает в виде строки.
И для каждой переменной уже получала отдельные биты.
Zoomskij Zoomskij | 13 Февраля 23:30ссылка сюдаответ на
Сначала всё именно так и было, для каждого параметра отдельная переменная, более того я их просто получал из системы, так-что это даже не переменные, а я просто обращался к памяти компьютера, так-что в оперативную память лишние 6 байт(short x 3 var) не падали :)
xeon xeon | 13 Февраля 23:31ссылка сюдаответ на
Лишние 6 байт... Ну не для микроконтроллеров же пишешь. Вот скажи, сколько твое приложение сейчас в памяти занимает? В мегабайтах, пожалуйста.
Zoomskij Zoomskij | 13 Февраля 23:37ссылка сюдаответ на
Да много, много... 11мб. Но это само по себе окно OpenGL весит столько, а так оно дальше практически в размерах не увеличится, убедили.
it 3.0 it 3.0 | 13 Февраля 23:39ссылка сюдаответ на
из этих 11 бОльшая часть - разделяемая (shared) память
xeon xeon | 13 Февраля 23:44ссылка сюдаответ на
Это понятно, но все же факт есть факт. Сейчас когда доступная для любого настольного приложения память измеряется сотнями мегабайт, экономить 6 байт и даже 6 Кб в ущерб поддерживаемости и читаемости кода это мягко говоря, несерьезно.
xeon xeon | 13 Февраля 23:07ссылка сюдаответ на
Открой для себя Qt, Gtk+
it 3.0 it 3.0 | 13 Февраля 23:10ссылка сюдаответ на
wxWidgets, еще можно к списку добавить.
Zoomskij Zoomskij | 13 Февраля 23:11ссылка сюдаответ на
Да возможно давно уже пора было, хотел под Линуксом с Qt, но так руки и не дошли...
xeon xeon | 13 Февраля 23:10ссылка сюдаответ на
Насчет часов - в slidebar висты. Не знаю, я их удаляю всегда, как и весь slidebar. Но вообще они красивые и интегрированы в slidebar. А твой bar не интегрирован с системой, поэтому уже не очень ясно, как им пользоваться.

P.S. Конечно, можно окно прямо на рабочий стол цеплять, но это решение не работает одинаково хорошо под XP и Vista/7 одновременно.
Zoomskij Zoomskij | 13 Февраля 23:14ссылка сюдаответ на
Вот эта с этой проблеммой-то и я столкнулся, искал решение как её решить функциями OpenGL - не нашёл. Создавал окно функциями C++, но оно не было ОпэнДжиЭльным и не хотело вообще ничего работать. А так да, сейчас оно идёт тупо как отдельная программа, что должно быть устранено.
it 3.0 it 3.0 | 13 Февраля 23:04ссылка сюда
для работы с TCP/IP, а конкретно с HTTP, рекомендую использовать libcurl, кажется она кроссплатформенная, и кажется, называется именно так. Разбираться с нуля с TCP/IP и реализовывать поверх руками HTTP, пожалуй, нецелесообразно. Если, конечно, нет цели именно разобраться с работой с сетью.
GL, как я понял, для кроссплатформенности, но все равно не получится скорее всего полностью избавиться от необходимости задействовать системозависимое API, без него, думаю, не получится сделать нормальной интеграции с ОС.
Если нужно будет сделать интерфейс со стороны сервера (например, чтобы при поиске выдавались только результаты поиска, без обрамляющего HTML) то пишите - это обсуждаемо.
А в целом - идея мне кажется интересной.
iNik iNik | 13 Февраля 23:12ссылка сюдаответ на
Идея по-моему супер клевая! Мне так очень нравится.
Я с удовольствием бы читал сообщения "прямого эфира" у себя на компьютере!
zOOm, если б можно было бы поставить 100500 за статью я бы поставил 2001000 :)
xeon xeon | 13 Февраля 23:22ссылка сюдаответ на
Ну это сделать вообще несложно. На сервер поставить jabber-бота, который будет подписавшимся эти сообщения рассылать.

У меня на своем сервере раньше жил jabber-бот, который ставил удаленно задания на закачку, выдавал температуру проца и винтов. Сделать такое - раз плюнуть. C# + mono + agsxmpp. Постоянно работающий сервак уже есть. Час-два свободного времени - и всё :)
Zoomskij Zoomskij | 13 Февраля 23:33ссылка сюдаответ на
Да может оно и так, только с интернет протоколами дела очень мало имел. Хотя на xmpp готовых ботов вроде полно написанно, можно было бы одного за основу взять, да настроить под личные нужды...
Zoomskij Zoomskij | 13 Февраля 23:22ссылка сюдаответ на
Да там были использованы некоторые WinAPI-функции, например получение размеров экрана: glutGet (чтобы располагать в правом верхнем углу). Но всё же я думаю это сильных проблем не вызвало бы при переписывании проекта на другую платформу.
Dan Dan | 14 Февраля 10:23ссылка сюда
Хорошее начинание. И еще лучше, что с первых шагов принимают участие все thinkit'овчане))
PS Надеюсь, что автор получит кучу полезных советов и наберет экспириенса для левелапа))
iNik iNik | 14 Февраля 10:41ссылка сюдаответ на
+10 к карме автор уже точно набрал! :)
Zoomskij Zoomskij | 15 Февраля 01:32ссылка сюда
Ну вот, сижу качаю .NET Frаmеwork, чуток почитал про него и понимаю, как же я отстал от цивилизации... Уж кажется и не наверстать упущенногою
николай николай | 15 Февраля 08:26ссылка сюдаответ на
в ИТ всегда так. А когда поймешь .NET, то осознаешь, что за это время появились уже другие технологии, еще более продвинутые и непостижимые.
Есть ли вообще смысл во всей этой гонке? Как сделать, чтобы не ты догонял, а тебя догоняли?
Наверное это главный философский вопрос :-)
xeon xeon | 15 Февраля 08:53ссылка сюдаответ на
Ну .net уже 10 лет развивается и пока что это единственный mainstream от Microsoft. Другое дело, что менялись версии 1.0 - 1.1 - 2.0 - 3.5 - 4.0. И технологии внутри версий. Например, для пользовательских интерфейсов WinForms -> WPF.
николай николай | 15 Февраля 09:30ссылка сюдаответ на
MFC тоже долго развивался, и где он? Посоветуете ли Вы начинать изучение MFC?
Анонимность Серая Анонимность Серая | 15 Февраля 10:27ссылка сюдаответ на
Нет, MFC сейчас не рекомендуется ни Microsoft, ни кем бы то ни было. Это уже умерло (хотя формально c новыми студиями даже какие-то обновления в MFC приезжают)
xeon xeon | 15 Февраля 08:52ссылка сюдаответ на
Если нет жестких требований извне по версии frаmеwork, начинай с 3.5 (ну или самый hi-end в лице 4.0).
Если хочется кросплатформенности - бери 2.0. Причем 2.0 стоит уже почти на 90% компьютеров.
Книжка очень правильная - Рихтер, CLR via C# 2.0

Неделю назад вышла 3я версия книги Рихтера. Естественно, пока только на английском.
Zoomskij Zoomskij | 15 Февраля 09:12ссылка сюдаответ на
Ну вот, и зачем я вчера ночью четверть гектара выкачивал с версией 3.5 и закладку на патч до четвертой создавал, а вот насчёт книг спасибо, 3-е издание одной и той же, или же 3-я часть которая дополняет предыдущие две?
Анонимность Серая Анонимность Серая | 15 Февраля 10:25ссылка сюдаответ на
3я часть, которая включает всё самое свежее в том числе и фишки 4.0
Четверть гектара выкачивал зря.
Так как:
1) Visual studio 2008 уже ставит 3.5 frаmеwork
2) Если бы воспользовался веб-инсталлятором, то скачалось бы только необходимое, а не всё подряд для всех платформ. В самом запущенном случае (Win XP без SP2) - около 70 Мб.
Zoomskij Zoomskij | 15 Февраля 13:35ссылка сюдаответ на
Угу, пробовал этот веб инсталятор, но почему-то около 10 мб выкачивается, и загрузка начинается заново, несколько раз произвел данную процедуру... потом решил не делать мозг ни себе ни компьютеру и скачал готовый инсталятор, благо ночью скорость позволяла...
Zoomskij Zoomskij | 15 Февраля 09:21ссылка сюда
И еще хотел спросить для .NET приложений вижуал студия нужна? и если да, то видать 2008 или 2010? потому как в шестой я у себя не наблюдаю нечто подобного, правда возможно после патчинга появится вкладка.
Анонимность Серая Анонимность Серая | 15 Февраля 10:26ссылка сюдаответ на
Компилировать можно консольным csc из .net frаmеwork SDK. Но конечно лучше студией.
2003 - поддерживает 1.1
2005я - 2.0
2008я - 3.5
2010 - 4.0

Я на 2008 сижу, хотя 2010 RC1 очень и очень неплоха :)
Анонимность Серая Анонимность Серая | 17 Февраля 00:44ссылка сюда
как я понял это ррс читалка... вопос зачем она нужно если до нее было написанно уже 100000000+1 читалка... в свою очередь могу сказать молодец возми с полки пиражок можно с мясом_)
it 3.0 it 3.0 | 17 Февраля 08:51ссылка сюдаответ на
не, как я понял, это не РСС читалка
Zoomskij Zoomskij | 17 Февраля 09:46ссылка сюдаответ на
Нет, функционала там планировалось создать несколько больше, чем просто просматривать новости.
iNik iNik | 26 Февраля 17:52ссылка сюда
Ну что там с тулбаром-то? Продвигается или заглохло?
Zoomskij Zoomskij | 27 Февраля 16:11ссылка сюдаответ на
Ааа как это ни прискорбно, но я опять отложил сей проджект... Меня напугали новыми технологиями и я ушёл в унисон.
З.Ы. одни меня гонят в будущее, другие же наоборот пытаются затолкать в каменный век...
iNik iNik | 27 Февраля 16:21ссылка сюдаответ на
;) так не слушайтесь никого и все получится!
Авторизуйтесь чтобы не быть Серой Анонимностью!
Играть в тетрис бесплатно он-лайн, без регистраций и смс =)
Тетрис на Thinkit.ru — Время играть в тетрис!

Играть в тетрис проще простого. Жмем на иконку и вперед.


Подпишись на thinkit.ru


Подпишись на наш RSS канал и читай thinkit.ru через твой любимый RSS-reader.


 

 
  CreativeCUBE - разработка и поддержка сайтовПроизводство и поддержка
cCube.ru
  При воровстве с этого сайта ссылка обязательна.
Copyright © 2008-2010 thinkit.ru
Связаться с нами