LINUX.ORG.RU

Сообщения kovrik

 

Сколько у вас рабочих часов получается в неделю?

Собственно, такой вопрос.
Читал на хабре из песочницы статью, где чел описывает свое собеседование в Яндекс (http://habrahabr.ru/sandbox/37783/). Его спросили, готов ли он тратить 32 часа в неделю, он ответил, что это будет трудно...O_o
Это получается ~6.5 рабочих часов в день. Я посчитал, у меня выходит минимум 40 часов в неделю (чаще больше).
А сколько у вас выходит?

kovrik
()

[java] безопасность jdbc password'а

Привет.
Есть веб-приложение, написанное на java. Оно подключается к базе. Юзернейм и пароль оно берет из класса Configuration. Как защитить пароль к базе? Ведь, допустим, злоумышленник получил .jar'ку, запускает декомпилятор (например, jd-gui), скармливает ей свой jar'ку и спокойно узнает пароль.
Если пароль зашифровать, то где-то надо будет хранить пароль для расшифровки - его можно будет узнать аналогичным образом.
Есть ли решение?

 

kovrik
()

Diaspora*

Прислали инвайт в Диаспору...

На первый взгляд - распределенный тормознутый и жутко глюкавый клон G+...
Кому-нибудь еще прислали? Как впечатления? Думаете, у проекта есть хоть какое-то будущее?

kovrik
()

[sql] вопрос

Здравствуйте!
Есть таблица, в ней поля id, name, A и B.
Можно ли сделать как-нибудь следующее:
Для каждого name берем все записи в которых поле B имеет значения N1,N2..Nm, суммируем значения по полю A, добавляем сумму к полю с B=M, и удаляем все поля с B=N1..Nm?
Пример:
id name A B
1 test 2 1
2 test 3 1
3 test 7 1
4 test 5 2
5 test2 6 1
6 test2 8 2

N1=1, M=2.
В результате должно получится:

id name A B
4 test 17 2
6 test2 14 2
?

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

 

kovrik
()

[java] servlet error handling

Здравствуйте!
Есть веб-приложение, состоящее из 2х частей:
-внутренняя (а-ля админка с jsp страничками)
-внешняя (выхлоп сервлета)

Нужно сделать следующее:
Если возникает error/exception во время работы с внутренней частью, то пускай выдает stacktrace.
Если возникает error/exception во время работы с внешней частью (т.е. кто-то извне делает запрос к сервлету, который должен вернуть сгенерированный html-код, но возникает ошибка), то сервлет не должен выдавать stacktrace, а должен выдавать какой-нибудь кусок html-кода (например, с надписью error).

Если в web.xml указываю:

    <error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/error.jsp</location>
    </error-page>
то правило работает для всего приложения. А нужно, чтобы только для конкретного сервлета...

 

kovrik
()

[sql] вопрос

Здравствуйте!
Помогите, пожалуйста, с SQL'ем.
Есть 2 таблицы (A и B). У A есть foreign key на поле X таблицы B.
Сейчас, если попытаться вставить в таблицу А запись, то может случится «foreign key constraint fails».

Задача стоит такая: производится запись в таблицу A. Поле X имеет вид <что-то>#<суфикс>. Сейчас такая запись не пройдет, если <что-то>#<суфикс> нет в таблице B.
Требуется, чтобы такое поведение и осталось, за одним исключением - если в записи присутствует #<суфикс>, то делается проверка на <что-то> (без #<суфикс>) в таблице B, и если такая запись есть, то разрешать вставлять в таблицу A. Если #<суфикс> нет, то делается обычная проверка.

Foreign key, я так понимаю, надо убрать. Но тогда куча левого вставляться будет. Stored Procedures? Или как лучше сделать?

PS: сумбурно, извините

 

kovrik
()

[java] lazy initialization

Здравствуйте!
Как в java правильно сделать lazy initialization?

Сначала было сделано так:

public class ServicesFactory {
    private static ServicesFactory instance = null;
    private static ImagesService imagesService = null;
    
    public static synchronized ServicesFactory getInstance() {
        if (instance == null) {
            instance = new ServicesFactory();
        }
        return instance;
    }
    
    public ImagesService getImagesService() {
        if (imagesService == null) {
            imagesService = new DefImagesServiceImpl();
        }
        return imagesService;
    }

}
PMD ругался на incorrect lazy initialization.

Сделал так:
public class ServicesFactory {
    private static ServicesFactory instance = null;
    private static ImagesService imagesService = null;
    
    public static synchronized ServicesFactory getInstance() {
        if (instance == null) {
            instance = new ServicesFactory();
        }
        return instance;
    }
    
    public synchronized ImagesService getImagesService() {
        if (imagesService == null) {
            imagesService = new DefImagesServiceImpl();
        }
        return imagesService;
    }

}
Ругаться перестал.

Но, по ссылке http://en.wikipedia.org/wiki/Double-checked_locking написано:
// Correct lazy initialization in Java
// This relies on the fact that inner classes are not loaded until they are referenced.
@ThreadSafe
class Foo {
    private static class HelperHolder {
       public static Helper helper = new Helper();
    }
 
    public static Helper getHelper() {
        return HelperHolder.helper;
    }
}
Как все-таки по-правильному?

 

kovrik
()

[java] утечки памяти?

Здравствуйте!
Есть веб-приложение(jsp) с сервлетами. Работает на удаленном сервере

java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.6.1) (6b16-1.6.1-3ubuntu3)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
Приложение работало, работало, все хорошо. Потом ВНЕЗАПНО упало. Админ говорит, что иногда оно сжирает весь проц и всю память - и умирает.
Утечки?
И еще такая штука:
Смотрю на выхлоп top - процесс жрет 2.8% памяти.
В Tomcat Web Application Manager'е перезапускаю приложение. Начинает жрать 3.2%. Перезапускаю - 3.4%. И так до 5.4% уже догнал. Это что такое?

 

kovrik
()

[mysql] вопрос

Здравствуйте!
Такой вопрос: смотрю логи парсера, там попадаются записи вида:
SQL ERROR: Cannot add or update a child row: a foreign key constraint fails (temp file operation failed)

«a foreign key constraint fails» - правильно понимаю, что просто не может найти запись в другой таблице (которая является ключем для этой таблицы)?
«temp file operation failed» - а что это значит?

 

kovrik
()

Перчатки резиновые + ток

Здравствуйте, такой вопрос: обычные желтые резиновые перчатки для мытья посуды - проводят электрический ток? Я, конечно, понимаю, что для этого дела проще купить специальные перчатки...Просто стало интересно именно про эти.

kovrik
()

public key & signature

Здравствуйте!
Расскажите, пожалуйста, про публичные ключи и цифровые подписи. Допустим, хочу иметь на руках пару private key-public key и цифровую подпись(для шифрования + подписи).
Как?
S/MIME, X.509, PGP-key?
Где можно получить (у центра, а не на коленке сгенерировать)?

kovrik
()

[java] email

Здравствуйте!
Помогите с отправкой email'ов с аутентификацией.
В инете нашел много примеров, но ни один не рабоает, вылетает ошибка:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/mail/Authenticator

Почему не может найти класс? Что забыл подключить?

 

kovrik
()

[html] 2 вопроса

Здравствуйте!
Не очень шарю в html, поэтому спрошу у вас.
Нужно сделать полоску с баннерами. Т.е. таблица - 1 строка и N столбиков. В каждом столбике отображается баннер (картинка) + текст под картинкой.

Вопросы:
1. (самое главное) Как сделать так, чтобы таблица была ВСЕГДА фиксированного размера? Задаю width, делаю <col width=...>, делаю style=«table-layout: fixed» - все равно, когда надпись под баннером больше определенной длины - все разъезжается, расстояния большими становятся (хотя визуально все поместилось бы). Как сделать, чтобы размеры были всегда фиксированные - расстояния между баннерами, ширина ячейки под баннер и тд.? Т.е. пускай даже не влезает - чтобы обрезалось, но не раздвигалось?

2. Как лучше делать подпись под картинкой? Сейчас делаю просто <br>'ом - надпись переходит в ячейке на следующую строку и оказывается под картинкой. Как сделать лучше?

Спасибо!

 

kovrik
()

cyanogenmod и htc legend

Здравствуйте!
Что-то уж прямо нахваливают этот цианогенмод.
Возникли следующие вопросы (гуглить лень, если честно): 1. Какие подводные камни? Минусы?
2. Во время перепрошивки что удаляется? Список контактов, смски, галерея ??? Или все сохраняется?
3. Стоит ли игра свеч?

kovrik
()

Юридический вопрос

Здравствуйте!
Возник вопрос юридического характера (в Talks'ах же можно?).
У знакомой в ходе следствия был изъят ноутбук. Во время изъятия никаких документов на него не требовали - просто забрали и все. Сейчас говорят, что можно ноут забирать, но теперь ВНЕЗАПНО требуют на него документы. Ноутбук был куплен года 3 назад, может документы уже утеряны. Что делать, если документы не найдутся? Вправе ли они требовать их?
Спасибо

kovrik
()

[perl] timezone, запутался

Здравствуйте!
Нужно посчитать epoch-time к началу текущего дня (00:00:00). Проблема в том, что он, судя по всему, как-то не так учитывает часовой пояс (GMT+4). Т.е. у него день перескакивает не в 00:00 по локальному, а в 04:00.

Код:

#!/usr/bin/perl

use strict;
use warnings;
use POSIX;

my $time;
my $day_sec;
my $tz;
my $day_start;
my $time_shift;
my $epoch;

$time=time();
print "Time: $time\n";
$day_sec=$time % (3600*24);
$tz=strftime("%z",localtime($time));

if ($tz=~/^\+(\d\d)(\d\d)$/) {
  $time_shift=$1*3600+$2*60;
};

$day_start=$time-$day_sec-$time_shift;

print "$1\n";
print "$2\n";
print "Time: $time\n";
print "Day_sec: $day_sec\n";
print "Timezone: $tz\n";
print "Timeshift: $time_shift\n";
print "Day start: $day_start\n";
Что-то я туплю, как исправить?

 

kovrik
()

chromium бага?

Обновил сегодня до 15.0.853.0 (Developer Build 96745 Linux) Ubuntu 11.04 и ВНЕЗАПНО перестала работать кнопка закрытия вкладки (SIC!)...т.е. этот крестик даже как кнопка не воспринимается - просто нарисован и все. В google-chrome нормально все. ЧЯДНТ?

kovrik
()

[java] Вопрос

Читаю тут статейку http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html , в которой рассказывается про то, что interface inheritance предпочтительнее implementation inheritance. В общем-то, статья занятная, имхо, но заинтересовал следующий момент. Автор пишет

For example, an object's instance variables (member fields that aren't constants), should always be private. Period. No exceptions. Ever. I mean it. (You can occasionally use protected methods effectively, but protected instance variables are an abomination.) You should never use get/set functions for the same reason—they're just overly complicated ways to make a field public.

Обычно рекомендуют делать через сеттеры и геттеры - а здесь категоричное Нет. Что имеет в виду автор?

И вообще, что скажете про статью?

 

kovrik
()

Проблема с парсингом логов

Здравствуйте!
Возникла проблема с парсингом логов - некоторые данные почему-то теряются и не попадают в базу.
Как все сделано:
Запущен nginx. Делается запрос вида

hostname.ru/s?e=1&r=2&p=3&u=4
Все такие запросы попадают в access.log
Затем, раз в 10 минут выполняется скрипт:
#!/bin/sh
# date (day)
#DATE=`date '+%d%m%y'`
DATE=`date --date='next day' "+%d%m%y"`

# date (with minutes)
DATEM=`date --date='next day' "+%d%m%y_%H%M"`

# rename logs file to '<filename>.<DATEM>'
mv /var/virtual/hostname.ru/logs/access.log /var/virtual/hostname.ru/logs/access.log.$DATEM

# reload nginx
/etc/init.d/nginx reload

# parse logs file
/var/virtual/hostname.ru/cron/parser_new.pl </var/virtual/hostname.ru/logs/access.log.$DATEM >/var/virtual/hostname.ru/logs/parser_new.log

# add DATEM-file log to the end of the DATE-file log
cat /var/virtual/hostname.ru/logs/access.log.$DATEM >> /var/virtual/hostname.ru/logs/access.log.$DATE

# remove temporary file
rm /var/virtual/hostname.ru/logs/access.log.$DATEM

Т.е. происходит следующее:
- файл с логами переименовывается - к названию добавляется дата с указанием числа,месяца,года,часа,минут.
- перезапускается nginx (и создается новый access.log)
- запускается парсер на файл с 10-минутными логами
- логи за 10 минут копируются в общий файл логов (который в конце дня bzip2'ается)
- файл 10-минутных логов удаляется

И так каждые 10 минут.

Как работает скрипт парсера (Perl):
1. построчно считывает файл логов
2. регексами разбивает строку - отбирает значения r,p,e,u
3. пишет в базу связку u-r

$query="INSERT INTO p${p}r (u,r,timestamp) VALUES ('$u','$r','$time') ON DUPLICATE KEY UPDATE timestamp='$time'";
$dbh->do($query);
if ($dbh->err()) {
    Debug("($query) SQL ERROR: $DBI::errstr\n");
    next;
};	
4. записывает r-p-e в хеш-таблицу:
if (!defined($VALUE{$r}{$p}{$e})) { $VALUE{$r}{$p}{$e}=0; };
$VALUE{$r}{$p}{$e}++;
5. затем собранные данные пишет в базу:
foreach $r (keys %VALUE) {
  foreach $p (keys %{$VALUE{$r}}) {
    foreach $e (keys %{$VALUE{$r}{$p}}) {
      print "r=$r p=$p e=$e $VALUE{$r}{$p}{$e}\n";
      $query="INSERT INTO table (p,e,r,value,timestamp) VALUES ('$p','$e','$r','$VALUE{$r}{$p}{$e}','$day_start') ON DUPLICATE KEY UPDATE value=value+$VALUE{$r}{$p}{$e}";
      $dbh->do($query);
      if ($dbh->err()) {
        Debug("($query) SQL ERROR: $DBI::errstr\n");
        next;
      };
    };
  };
};

Проблема:
Теряются некоторые запросы.
Причем, связка u-r записывается в базу ВСЕГДА (парсер, шаг 3). НО на шаге 4, судя по всему, почему-то не все записывается в хеш-таблицу (если верить print «r=$r p=$p e=$e $VALUE{$r}{$p}{$e}\n»;).
Если же потом, например, повторно делаю запросы - тогда они вполне могут пройти и попасть в базу.
Получается, что иногда считается, иногда нет. Где может быть косяк?

PS: Названия немного поменял.
PPS: Варианты «Да у тебя одни костыли, надо все по-другому с нуля переписать» не предлагать.

kovrik
()

[jsp] i18n

Здравствуйте!
Есть проект - java, jsp, servlets и тд.
ВНЕЗАПНО понадобилось добавить поддержку мультиязычности.Как делать эту самую i18n? Какие-то типовые решения? Инструменты?
Спасибо!

 

kovrik
()

RSS подписка на новые темы