Sunday, December 16, 2007

Хозяйке на заметку.

http://www.complexspiral.com/publications/containing-floats/ -- как избежать схлопывания родительского div'a.

http://softwaremaniacs.org/blog/2005/12/01/css-layout-float/ -- старая добрая статья о флоате, must read=)

http://www.cs.tut.fi/~jkorpela/html/iframe.html -- очень подробная статья про iframe, его особенности и примеры использования.
http://www.htmlhelp.com/reference/html40/inline.html -- список inline-боксов (строчные теги)

http://www.htmlhelp.com/reference/html40/block.html -- блочные боксы

http://www.positioniseverything.net/articles/onetruelayout/equalheight -- как сделать колонки ровными по высоте (хотя мне этот способ не очень нравится, лучше уж "Ложные колонки").


Powered by ScribeFire.

Tuesday, October 9, 2007

Рабочее

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

В общем, создаем батничек, со следующим содержанием:

dir /a /b /-p /o:gen >filelisting.txt

где результаты будут помещены в filelist.txt и будут иметь простенький вид.

Если нужны всякие навороты, типа размера файлов, времени создания и прочих радостей, в батничек пишем:

dir /a /-p /o:gen >filelisting.txt

Запускаем батничек и получаем нужный список=)

Можно это дело еще интереснее использовать: добавить батничек в меню правой кнопки мыши, и тогда не нужно его будет каждый раз копировать и запускать вручную.


Как это сделать, написано тут:
http://www.theeldergeek.com/file_list_generator.htm


Powered by ScribeFire.

Saturday, September 22, 2007

A bit of Ajax: Protoload

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

Ручками это все писать, естественно, не очень хочется, тем более, слабо верится, что подобные вещи до нас никто не делал. Поэтому, чтобы не изобретать велосипед, можно обратиться к чудненькому добавлению к стандартной ajaxовой библиотеке Prototype -- Protoload.

Protoload -- js-файлик с двумя функциями: startWaiting() и stopWaiting(). Они заставляют нужный вам блок, кнопку, строку, див, всю страницу, и т.п. покрываться полупрозрачным фоном, на котором (опционально) может отображаться милая gif-картиночка, изображающая, что страница усиленно думает. Свойства картиночки, ее размещение определяются в css, как какой-нибудь класс. Этот класс передается в метод startWaiting().

Простой пример: заставим див с id='main' покрыться завесой загрузочной картинки.

Пусть есть функция, отправляющая ajax-запрос:

function submitAll() {
$('main').startWaiting('bigWaiting'); //заставляем див покрыться загрузчиком,
//передаем в startWaiting нужный css-класс. В описании класса указываем картинку,
//которую хотим использовать для загрузчика. Css идет в комплекте с js-файлом.
var submitAjax = new Ajax.Request('http://somewhere.com',
{
method:'post', parameters: data, //представим что данные есть+))
onComplete: parse_response
});
}

И соответственно parse_response, которая начнет выполняться, когда запрос вернется на страницу.

function parse_response(originalRequest) {
$('main').stopWaiting(); //див возвращается в исходное состояние
//а мы продолжаем обработку запроса...
....
}

Подключаем нужную css и js-файл к странице (не забыв предварительно подключить и Prototype.js) -- и собственно все=))
Картинок для загрузчика можно нагенерировать кучу, красивеньких и разных цветов. Например, тут.

Саму библиотеку можно скачать здесь. Прямая ссылка на архив -- тут.
Enjoy=)


Powered by ScribeFire.

Wednesday, August 15, 2007

Мыслевслух

День сегодня был дурной, мне еще надо где-то достать молоко, у меня порвались тапки, в которых ходить еще минимум сутки, в доме бардак и делают кухню.
Читаю требования к нашему сайту -- и не могу отделаться от ощущения "а вот если бы мы это делали на ror"=) (тока не бейте меня тапками, но всевозможные валидации для формочек, pagination, куча аяксовых фишек для работы с пользователем, рейтинг, комменты... Это все такое грузное в OpenCms...)
Зато я пью зеленый чай и слушаю PF, наконец-то хоть у одного нормального человека в сетке нашлось пару альбомов=)
Еще что меня бесит -- в новых темплейтах, много где, вместо нормального текста Lorem Ipsum dolor blah-blah-blah, недостаток фантазии у девелоперов это груууустно. Об этом писали еще в Getting Real, и я с ними полностью согласна. Текст должен быть приближен к реальному, чтобы сразу было видно, как он смотрится. А Lorem Ipsum -- это мертвое непонятночто.
Еще наши требования постоянно противоречат сами себе. В одном месте так написано, в другом -- по-другому. И все равно в итоге получится совсем третье, потому что это еще будут смотреть заказчики.
Ну вот написали: новость можно отсылать только одному человеку. А потом: поля на форме отсылки: cc, bcc... Блин, ну нафига??+)) Мало того, что противоречие, так еще и куча формочек сбивает с толку. Я сама за 8 лет пользования инетом только вчера узнала, что такое вообще эти cc и bcc, никогда ими не пользовалась.
Вот все-таки полезно в блог писать что-нибудь, сразу вспоминаешь про баги, которые могут появиться, если это не потетстить. Вот сейчас сижу и не знаю, как на самом деле работает моя валидация, и валидирует ли она, если в инпуте больше одного имейла?+))) Вот такая я балда=)) Пойду проверять=)



Powered by ScribeFire.

Tuesday, August 14, 2007

Билд

— Мама, знаешь, завтра у нас билд. Даже не знаю как это тебе объяснить.
— Пьянка, что ли?


Собственно вот. Завтра у нас билд. Надеюсь после него мне не сильно надают по башке=)) Потому что если надают, продлят испытательный срок, переведут в другое место и т.д и т.п.
Сегодня было весело, я переделала все, что делала до этого, отобрала у Саши стул, за что также была помянута добрым словом (у меня стул забрал бизнес-аналитик=)), смтп сервер мне пообещали выделить отдельно, силами айтишников, потому что мой собственный дальше итра письма не шлет, в общем ух. Еще у меня сегодня опять отвалилась CMS, каким-то волшебным образом она переписала конфиг там, где не надо. Еще, как оказалось, я большой любитель изобретать велосипед, и наверное пора начинать пользоваться стандартными вещами. Если честно, следующий таск мне не хочется делать еще больше, чем переделывать этот. Поэтому наверное этим я и займусь. Еще я очень надеюсь, что мне хотя бы багов накидают, но это будет только послезавтра в лучшем случае. Эх. И нарезка с новым дизайном тоже будет неизвестно когда. В общем, страшное это дело, ух=)
Еще я поняла, что RoR и правда рулит, и очень много где. Но об этом не здесь и попозже.


Powered by ScribeFire.

Tuesday, August 7, 2007

Первый день в Itransition

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

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

Есть еще мелкие неудобства, но по сравнению с крупными это ерунда.
Разбираться и думать надо много и быстро. Сегодня я больше развлекалась, ну а что делать, надо спрашивать, завтра буду теребить соседей. Правда, завтра может их и не потеребишь, потому что завтра у них билд. Вот так вот.

А проект наш -- сайт casino.com, если мы его сделаем, будет красиво+) Дизайн правда не от нас, откуда-то со стороны. Эх.

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

А так все замечательно, куча впечатлений, на выходных еще у них планируется пикник. Может и съезжу, если не заставят с парашютом прыгать или стрелять+)) Буду пить теплую водку и приставать к манагерам. Ой. Ну, впрочем это неважно.


Powered by ScribeFire.

Сегодня в Википедии мне подвернулись...

...веселые статейки, теперь я знаю, что такое EJB, Tomcat, netcat, Struts, Spring, JSF (ну с JSF надо еще почитать, как-то все расплывчато), еще я помню что такое jBoss, Hibernate и GWT. В общем, лексикон Эллочки-Людоедки пополнен и вполне готов к сегодняшнему походу в Itransition.
Пажелай мне удачи в боюююю, пажелаааай мне удаачи+))


Powered by ScribeFire.

Monday, July 30, 2007

Testing ScribeFire for Blogger

Для конфигурации аддона к ФФ ScribeFire для постинга в блоггер пришлось сделать следующее: при запросе линки к API заходим на свою страницу, смотрим исходный код страницы, ищем там service.post и рядом с этим копируем линку, что-то вроде:
http://www.blogger.com/feeds/1669204333583367404/posts/default, это и есть требуемая линка к API.
Логинимся и да пребудет с нами счастье+))



Powered by ScribeFire.

Saturday, June 30, 2007

Пару линок

Все мы любопытные, задаем правильные вопросы, получаем правильные ответы... Наткнулась сегодня на Answers.com — отличная буржуйская интернет-энциклопедия, где можно задать вопрос и получить ответ из какой-либо статьи. Почти Википедия, только еще с пользователем общается=)
И еще один сайтик, тот же вектор, только направление в другую сторону, уже русский (буржуйский такой тоже видела, но не помню+))) — Vorum.ru (видимо калька с немецкого "warum" — "почему"), неплохой аккуратненький вебдванольный, прости господи, вебсервис, абсолютно не раскрученный в рунете. Имхо зря=)

Tuesday, May 29, 2007

Getting real

Прочитала "Getting real" от 37signals, компании, создавшей RoR. Очень хорошая книжка про то, как хорошо оставаться маленьким и бедным и при этом писать хорошие программы. Про то, как их писать, с чего начинать и на что обращать внимание. Как сказал товарищ Phoebus, прочищает мозги, и при этом книжка короткая, ясная, в ней нет ничего лишнего. Getting real — это целая мини-философия, такая я бы сказала нехарактерная для запада и западной ментальности, но тем не менее появившаяся у них, и я за них рада=) В общем, читать (по-русски).

Wednesday, May 9, 2007

Укрощаем JTable

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

Итак, у меня есть таблица 9 на 9, ячейки квадратные и белые.

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

Далее есть у меня объект JTable myJTable, чтобы разукрасить его как надо, надо повесить на колонки, из которых состоит таблица, рендерер для ячеек. По умолчанию у них стоит DefaultTableCellRenderer, поэтому чтобы получить свою разновидность, надо создать свой класс, наследующий от DefaultTableCellRenderer.

//вешаем рендерер

for (int j = 0; j < DIM2; j++) {
myJTable.getColumnModel().getColumn(j).setCellRenderer(
new YourTableCellRenderer());
}

int DIM = 3;
class YourTableCellRenderer extends DefaultTableCellRenderer {
//этот метод возвращает компонент -- рендерер для нашей ячейки, только уже модифицированный
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
Component c = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
c.setFont(new Font("Tahoma", Font.PLAIN, 30));
c.setForeground(Color.black);

//выделение блоков серым цветом
if (((row / DIM) * DIM + (column / DIM)) % 2 == 0) {
c.setBackground(Color.LIGHT_GRAY);
} else
c.setBackground(Color.white);
return c;
} }

Красота=) Таким же образом в этом методе можно ввести проверку какого-либо условия, и уже по нему делать с ячейкой что угодно.

Так, например, у меня есть условие судоку и решение — они выделяются разным цветом.

Monday, April 23, 2007

В продолжение

Кстати сказать, дайри он все-таки не поддерживает, что меня, конечно, смущает. Если не ошибаюсь, их API не поддерживает ни один из виденных мною клиентов, и даже новоиспеченный сервис для собирания паролей от блогов Swiftpen.

Еще я не поняла, как здесь ставить метки. Тут есть куча возможностей для вставки тегов, но как добиться родной записи "labels"?+))

 

Blogger Tags:

Оффлайновые клиенты для блогов

Решила я, значит, заняться "кросспостингом", ибо некоторые мои посты, идущие в дайри.ру, можно было бы постить и в ЖЖ, или даже сюда, или наоборот, отсюда туда, и т.д. В поисках клиента который поддерживает и дайри, и ЖЖ, и Блоггер, я наткнулась на Windows Live Writer. Из-под него я сейчас и пишу.

Он умный, загрузил сам какие-то настройки, открыл мне любезно окошечко, пиши, мол. Ну что ж, попробуем...=)

 

Tuesday, March 13, 2007

Lost in translation.

Что бы там ни говорили насчет того, что на родном языке учиться легче, все-таки многие детали при переводе теряются настолько, что на английском если прочитать — будет понятно, а на русском — точно что-то упустишь. И то ли это трудности перевода, то ли невнимательность переводчиков...
Скоро начну смешивать в мыслях русские и английские понятия, особенно если это касается программирования. Больно английские хороши=) И потом, нативные названия дают хорошее интуитивное представление о возможном объекте или действии, даже если не знаешь, чего это такое.
А еще потихоньку проникаюсь истинным духом ООП. Молодец был тот, кто эту парадигму придумал. Просто слов нет, насколько молодец (и большой оригинал местами=)))...

Нитяное.

Читаю про потоки, никак не могу себя заставить согласовывать поток в мужском роде: для меня это она, Thread. То ли потому, что ее поведение не гарантировано после применения большинства методов (ох уж эти фемели...), то ли просто потому, что слово "поток" слишком заезженное (всяк может быть: и поток ввода-вывода, и поток выполнения), хоть по смыслу и подходит.
Можно было бы перевести Thread поромантичнее, как "нить" (да хоть бы и оставили инглишизм, "тред", и никто бы не путался), но поток-то конечно звучит солиднее.
А про себя пусть все равно будет она. Как-то приятнее=)

MalePerson IS-A FemaleThings?

Хорошая штука в Java — перечисления, особенно для хранения констант. Потому что когда пихаешь константы в интерфейс, а потом прилепливаешь к классу, может получиться бред с точки зрения того, что слово "implements" равносильно отношению "is-a":
interface FemaleThings { int MAX = 256; int MIN = -258 }

class MalePerson implements FemaleThings {
void doSth() {
}
}

Примерчик не особо наглядный, но в том же свинговском API такие вещи встречаются очень часто.

Sunday, March 11, 2007

Радость

Уф. Полдня возилась с судоками, в результате прикрутила прелоадер и сделала (алла-алла!!!) границы в таблице. Но какой ценой! Ужас. Нельзя так извращаться (вместо одной таблицы сделала 9, фиктивных), но по-другому у меня не получилось, да и времени заняло гораздо меньше, нежели когда я пыталась разобраться в устройстве JTable.
Вот. Ну, зато теперь красота=)) Осталось, в общем-то всего-ничего: сделать генерацию и доделать алгоритм под решение. Уф. Это с точки зрения алгоритма. А с точки зрения интерфейса еще пахать и пахать. Эх.
Итак, выводы: 1. Средствами JTable границы жирные в блоках сделать можно, но сложно. Смотрела пример, не впечатлило.
2. Можно было бы добавить прозрачную панельку с рисованными линиями сверху над таблицей, используя JLayeredPane. Это у меня тоже не получилось. Таблица из-под низа никак не хотела выглядывать. К тому же стала сомневаться, что если бы я добавила прозрачную панель с границами, работал бы выбор значений в клетках с помощью выпадающего списка.
3. Если время, затраченное на написание несравнимо меньше времени, затраченного на копание в документации, то лучше и не копаться (слишком долго=)). Мдям.

Thursday, March 8, 2007

Fast forward

  • Сегодня знакомилась с перлом. Матка боска, ну и синтаксис, ну и "гибкость", сдуреть можно. Ruby понятнее=)))
  • Позавчера поставила IntelliJIdea — абалденная штука=)))
  • В универе грузят по полной. Мы будем учить VHDL.
  • Судоку потиху продвигаются. Сегодня искала ошибки и пыталась сделать так, чтобы моя солв еще и генерировала какую-нибудь заполненную сетку. Не получилось. Все из-за того, что неправильно работает мой брутфорс. Т.е. работает, но не делает шаг назад. Буду думать.
  • Еще про судоку. Интересным оказалось сведение алгоритма поиска решения к раскраске графа, вершины которого -- пустые клетки, и 2 вершины соединены ребром, если находятся в одном ряду или столбце или блоке 3х3. В связи с этим окунулась в книжки по графам. С ума сойти, сколько же там всякой теории и интересных теорем. А потому подумалось: есть ли специальное ПО для работы с графами? Или, еще лучше, класс, реализующий граф на Java/С++? Причем желательно было бы все-таки чтобы не любительский подход был к этому. Т.е. чтобы класс входил в SDK. Также надо будет поискать ПО для отрисовки графов (это я кажется видела у Алены С++).
  • Надо что-то думать с сертификацией. Т.е. начинать нормально готовиться. Учитывая, что в универе грузят, это сложно. Но возможно.
  • Sunday, February 25, 2007

    Страдания по JTable

    Делаю сейчас курсовую, игра "Судоку", на Java. В Свинге я ни в зуб ногой, а потому для меня стало проблемой, как сделать жирные границы у блоков клеток 3х3. "И чего я только не пробовала...", но, конечно, все оказалось не так просто. Свинговский класс JTable оказался неудобоваримым хотя бы потому, что он состоит не из агрегированных ячеек (ну это если бы я делала, проще всего, в лоб+)), а из колонок (уж не знаю, почему не из строк). То есть в принципе все просто: хочешь границы или фон поменять, делай свой TableCellRenderer, но опять же, я не могу получить каждую  третью ячейку, потому что я вообще не могу получить ячейку, чтобы в ней сделать границу с одной стороны. Покопалась в инете, нашла примеры, как делать с блоком. Как я поняла, границы рисуются просто сверху над таблицей. Да, вот кстати, с чем я еще не разобралась, так это как рисовать поверху. Можно было бы сделать тогда совсем просто: рассчитать, где должны быть границы и нарисовать сверху. Это проще хотя бы потому, что ресайзить окошко совсем не обязательно, т.е. размер можно зафиксировать и оставить так. Моя проблема в том, что я не знаю, как добавить прозрачную pane на уже имеющуюся pane с судоку. Ушла думать.

    Thursday, January 4, 2007

    О себе любимой и не только

    Зовут меня в миру Татьяной, учусь в Белорусском
    госуниверситете, на механико-математическом факультете.
    В университете мы учим С++, полтора года, и полгода я учу Jav'y на
    спецкурсе. Этим практически ограничиваются мои знания в области
    языков программирования, если не считать моих робких попыток
    познакомиться с ActionScript'ом и Javascript'ом и научиться делать
    что-нибудь полезное на HTML+CSS+)

    Вчера знакомилась с Ruby и Ruby on Rails, осталось очень 
    приятное впечатление как от самого языка, так и от фреймворка.
    Первое, что, конечно, бросается в глаза — необычный синтаксис (да-да,
    это не Java=)). Программы получаются коротенькие, без ущерба для их смысла.
    Я так поняла, что именно этим и гордятся больше всего энтузиасты от Ruby.
    Меньше кода, никаких точек с запятыми=)) Приятно сделана система для
    начала работы с Ruby (связка ri/fxri+irb), приятным оказалось и то, что
    мой любимый текстовый редактор Notepad++ умеет красиво подсвечивать
    рубиновый код=) Кроме него можно использовать специальные IDE для
    Ruby, мне ближе всего оказался вариант установки плагина
    к Eclipse под названием RDT.
    На официальном сайте Ruby можно найти неплохие тьюториалы для начала,
    самая большая книжка Programming Ruby входит в установочный пакет,
    есть англоязычная вики, есть очень любопытная Why's (Poignant) Guide to
    Ruby
    — книжица, умело маскирующаяся под несерьезную=)
    Русские энтузиасты уже перевели несколько интересных статей, хорошая
    статья о Ruby с большим количеством ссылок есть в Википедии,
    в том числе там же можно найти неплохой Викиучебник, хоть и
    неполный, но дающий начальное представление о порядке вещей.
    В ЖЖ есть русское комьюнити, в группах Google — сообщество,
    посвященное Ruby on Rails
    .
    Начала писать, и поняла, что тема более глубокая, чем я могу
    вместить в один пост, а посему to be continued=)

    Tuesday, January 2, 2007

    О темплейтах.

    Хорошие тут темплейты, ничего не скажешь, выбор есть, 
    на разный вкус и цвет. 
    Отсмотрела все в зеленых тонах, и остановилась на этом 
    варианте. Вообще странные тут шаблоны, даже очень. 
    Предыдущий пост не хочет подстраиваться под шаблон 
    и ровно становиться в строки так, как требуют границы. 
    В опере=), в explorer'e все замечательно, но там не
    прельщает такой здоровенный корявый шрифт.
    Подумываю перейти на шаблон Simple. Все в строки 
    влазит, и грузиться должен быстрее=) 

    Welcoming myself=)

    В диком восторге от сервиса, предоставляемого Блоггером, гораздо удобнее и понятнее, чем в ЖЖ, и намного (бедное слово "намного", тут даже "намнооооооого" будет мало=)) функциональнее, чем на Diary.ru, где я веду дневник уже более трех лет. Такая забота о пользователях не только порождает желание писать, но еще и писать аккуратно, хорошо и по делу.
    Еще больше порадовало то, что мой никнейм оказался не занят. Хотя в том же Гугле я не успела зарегистрировать свой обычный ник.
    =)