- 1
sprintf "%d-%02d-%02d", map { $$_[5]+1900, $$_[4]+1, $$_[3]+1 } [localtime];
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−116
sprintf "%d-%02d-%02d", map { $$_[5]+1900, $$_[4]+1, $$_[3]+1 } [localtime];
Даты. Perl. Классика.
http://perldoc.perl.org/POSIX.html#strftime
+147
Файл с настройками
$category_set = array (
'allow_num_news' => '1', //Показывать количество новостей
'allow_null_cat' => '0', //Показывать разделы в которых нет новостей
'el_1' => '<div class="mydiv">', //Основной блок. Стандартно - <ul> Свои - <div class="mydiv>"
'c_el_1' => '</div>', //Закрывающий тэг основной блок. Стандартно - </ul> Свои - </div>
'el_2' => '<h3>', //Элемент подменю. Стандартно - <li> Свои - <h3>
'c_el_2' => '</h3>', //Закрывающий тэг элемент подменю. Стандартно - </li> Свои - </h3>
'el_3' => '', //Дополнительно. Стандартно - '' Свои - ''
'c_el_3' => '', //Закрывающий тэг дополнительно. Стандартно - '' Свои - ''
'p_el_1' => '', //Элемент основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_c_el_1' => '', //Закрывающий тэг основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_el_2' => '', //Элемент подменю если есть подкатегории. Стандартно - <ul> Свои - ''
'p_c_el_2' => '', //Закрывающий тэг подменю если есть подкатегории. Стандартно - </ul> Свои - ''
'p_el_3' => '<p>', //Элемент дополнительно если есть подкатегории. Стандартно - <li> Свои - <p>
'p_c_el_3' => '</p>', //Закрывающий тэг дополнительно если есть подкатегории. Стандартно - </li> Свои - </p>
'el_add' => '<span style="font-size:10px;"> - ', //Тэг для количества новостей
'c_el_add' => '</span>', //Закрывающий тэг для количества новостей
);
include "Файл с настройками"
function categoryTree($cat_arr,$parent_id){
global $category_set, $DOMAIN,$link_set;
$elAdd = $category_set['el_add'];
$celAdd = $category_set['c_el_add'];
if(is_array($cat_arr) and isset($cat_arr[$parent_id])){
foreach($cat_arr[$parent_id] as $cat){
$el1 = $category_set['el_1'];
$cel1 = $category_set['c_el_1'];
$el2 = $category_set['el_2'];
$cel2 = $category_set['c_el_2'];
$el3 = $category_set['el_3'];
$cel3 = $category_set['c_el_3'];
if ($cat['id_parent'] >0){
$el1 = $category_set['p_el_1'];
$cel1 = $category_set['p_c_el_1'];
$el2 = $category_set['p_el_2'];
$cel2 = $category_set['p_c_el_2'];
$el3 = $category_set['p_el_3'];
$cel3 = $category_set['p_c_el_3'];
$sub = $link_set['sub_for_tree'];
}
$numNews = $cat['num_news'];
if($category_set['allow_num_news'] != 1){
$elAdd = '';
$celAdd = '';
$numNews = '';
}
if($cat['num_news'] != 0){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
else{
if($category_set['allow_null_cat'] == 1){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
}
}
}
else return null;
return $catTree;
}
Цель.
Полный, наиполнейший, высший контроль над деревом категорий с подкатегориями. Хорошо, что комментарии написал.
Кто бы, что не говорил, а это изумительно работает. Единственная недоработка, тэг <а> Тоже должен быь в массиве с настройками :-) я так думаю.
з.ы Переделывать лень.
−116
<tr style = 'height:20px;'>
<td class =len_ss >
<text>имя категории</text>
</td>
<td>
<text>тип категории</text>
</td>
<td>
<text>алиас категории</text>
</td>
<td>
<text>hidden категории</text>
</td>
</tr>
Попросил новичка сделать шапку для таблицы...
+152
function TimeViewport(rootElement, container, canvas, minZoom, maxZoom)
{
this.container = container;
this.rootElement = rootElement;
this.lowPassAlpha = 0.38;
this.canvas = canvas;
this.minZoom = minZoom;
this.maxZoom = maxZoom;
this.zoom = minZoom;
this.size = Math.min(1.0, 1.0 / Math.pow(2, this.zoom));
this.left = 0.5 - this.size / 2.0;
this.right = 0.5 + this.size / 2.0;
this.mouse = {
isDown : false,
panning : false,
velocityMode : false,
downPos : {x : 0, y : 0},
movePos : {x : 0, y : 0},
lastMovePos : {x : 0, y : 0}
};
var self = this;
this.filtered = {
"left" : 0.5 - self.size / 4.0,
"right" : 0.5 + self.size / 4.0
};
this.lastRedrawTime = (new Date()).getTime();
this.maxRedrawInterval = 500;
setInterval(function () { if (self.doLowPass != null) self.doLowPass(); }, 17);
this.canvas.onmousedown = function(event) { self.mouseDown(event) };
this.canvas.onmousewheel = function(event) { self.onMouseWheel(event); };
var oldMouseMoveHandler = this.rootElement.onmousemove;
this.rootElement.onmousemove = function (event) {
if (self.mouseMove) self.mouseMove(event);
if (oldMouseMoveHandler != null) oldMouseMoveHandler(event);
};
var oldMouseUpHandler = this.rootElement.onmouseup;
this.rootElement.onmouseup = function (event) {
if (self.mouseUp) self.mouseUp(event);
if (oldMouseUpHandler != null) oldMouseUpHandler(event);
};
var oldMouseLeaveHandler = this.rootElement.onmouseleave;
this.rootElement.onmouseleave = function (event) {
if (self.mouseLeave) self.mouseLeave(event);
if (oldMouseLeaveHandler != null) oldMouseLeaveHandler(event);
};
};
Очередной велосипедик.
+191
var bytes = new byte[] {0, 0, 0, 1};
var littleEndianBytes = bytes.Reverse().ToArray();
Single x = BitConverter.ToSingle(littleEndianBytes, 0);
http://stackoverflow.com/questions/1603295/fast-way-to-swap-bytes-in-array-from-big-endian-to-little-endian-in-c-sharp
Обратный порядок байт.
http://stackoverflow.com/a/2473895
I use LINQ, Chuck Norris said.
Фраза просто убила. Они совсем уже одурели?
+24
void sleep_in_qt_ms(unsigned millisec) {
QMutex foo;
foo.lock();
foo.try_lock(millisec);
foo.unlock();
}
sleep в Qt - что, серьезно, чтоли?
особенно порадовало: Warning: Destroying a locked mutex may result in undefined behavior.
действительно, накой нам деструкторы?
+132
static volatile int rotatelog=0;
void daemonize();
void *receive_thread(void *ptr);
void *write_thread(void *ptr);
void sighup_hdl(int signal);
FILE *hfl_log;
int main(){
daemonize();
hfl_log=fopen(HM_LOGFILE, "a");
setlinebuf(hfl_log);
signal(SIGHUP,sighup_hdl);
receive_thread(NULL);
return 0;
}
void daemonize(){
int devnullfd = -1;
umask(~0700);
devnullfd = open("/dev/null", 0);
dup2(devnullfd, STDIN_FILENO);
dup2(devnullfd, STDOUT_FILENO);
close(devnullfd);
switch(fork()) {
case -1:
perror("fork");
exit(1);
break;
case 0:
break;
default:
exit(0);
break;
}
}
void *receive_thread(void *ptr){
int udpsock, i;
struct _peventmsg *pmsg;
struct sockaddr_in serv;
socklen_t servlen;
ssize_t len;
time_t tm;
char sign1[SHA_DIGEST_LENGTH], sign2[SHA_DIGEST_LENGTH];
udpsock=socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (udpsock==-1)
return NULL;
i=32*1024*1024;
setsockopt(udpsock, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&i, sizeof(i));
memset(&serv, 0, sizeof(serv));
serv.sin_family = AF_INET;
serv.sin_port = htons(TSPORT);
serv.sin_addr.s_addr = inet_addr(TSIP);
if (bind(udpsock, (struct sockaddr *)&serv, sizeof(struct sockaddr_in))){
close(udpsock);
return NULL;
}
while (1){
if (rotatelog){
rotatelog=0;
//fflush(hfl_log); fclose() should be enough
fclose(hfl_log);
hfl_log=fopen(HM_LOGFILE, "a");
//do we really tail -f that much on this log that we need it line buffered? It requires 1 write per incoming packet
setlinebuf(hfl_log);
}
pmsg=(struct _peventmsg *)malloc(sizeof(struct _peventmsg));
servlen=sizeof(serv);
len=recvfrom(udpsock, &pmsg->msg, sizeof(pmsg->msg), 0, (struct sockaddr *)&serv, &servlen);
if (len!=sizeof(pmsg->msg)){
free(pmsg);
continue;
}
time(&tm);
if (pmsg->msg.tm+20<tm || pmsg->msg.tm-20>tm){
free(pmsg);
continue;
}
memcpy(sign1, pmsg->msg.sign, sizeof(sign1));
memset(pmsg->msg.sign, 0, sizeof(pmsg->msg.sign));
strcpy(pmsg->msg.sign, SECRET);
SHA1((unsigned char *)&pmsg->msg, sizeof(pmsg->msg), (unsigned char *)sign2);
if (memcmp(sign1, sign2, sizeof(sign1))){
free(pmsg);
continue;
}
strcpy(pmsg->ip, inet_ntoa(serv.sin_addr));
fprintf(hfl_log, "%ld %s %lu %u %u %u %u %s\n",
le64toh(pmsg->msg.tm), pmsg->msg.ip, le64toh(pmsg->msg.bytessent), le32toh(pmsg->msg.seconds),
le32toh(pmsg->msg.ttype), le32toh(pmsg->msg.tcpi_total_retrans), le32toh(pmsg->msg.tcpi_snd_mss), pmsg->ip);
free(pmsg);
}
}
Traffic analysis tool: http://vasil.ludost.net/blog/?p=3029
+118
private boolean isStoreBlocked(final CustomerRef customerRef) {
if (customerRef == null || !customerRef.isValid()) {
// Presumption of innocence
return false;
}
return blockLogRepo.isBlocked(customerRef);
}
−99
- (CGPoint)itemTopLeftPoint
{
CGRect bounds = CGRectMake(0,0, 100, 100);// [[UIScreen mainScreen] bounds];
CGFloat width = bounds.size.width;
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) {
width = bounds.size.height;
}
CGFloat x = 0, y = 0;
x = (width - (self.numberOfItemsPerRow * AGIPC_ITEM_SIZE.width)) / (self.numberOfItemsPerRow + 1);
y = x;
return CGPointMake(x, y);
}
Приспичило мне тут показать кастомный контроллер в модальном окне. А он вместо контента показывает чушь, расчитанную под другую ширину.
Обнаружено в ходе раскопок.
+140
static inline uint64_t parse_hex_uint64(const char *s) {
const uint64_t m1 = 0x4040404040404040ll;
const uint64_t m2 = 0x000F000F000F000Fll;
const uint64_t m3 = 0x0F000F000F000F00ll;
const uint64_t *p = (const uint64_t*)s;
int64_t a = p[0], b = p[1];
a += ((a & m1) >> 6) * 9;
b += ((b & m1) >> 6) * 9;
a = (a & m2) << 12 | (a & m3);
b = (b & m2) << 12 | (b & m3);
a |= a >> 24;
b = b >> 8 | b << 16;
return (a & 0x0000FFFF00000000ll) | (a & 0xFFFF) << 48 | b >> 48 | (b & 0xFFFF0000);
}
По мотивам http://govnokod.ru/12800#comment173346.
Байтоёбский парсинг шестнадцатеричного числа. Версия для 64 битного проца.
https://ideone.com/IFG0fH