- 1
- 2
- 3
- 4
- 5
- (void)cellButtonTapped:(UIButton *)sender
{
    UITableViewCell* cell = (id) sender.superview.superview.superview;
    ...
}Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−107
- (void)cellButtonTapped:(UIButton *)sender
{
    UITableViewCell* cell = (id) sender.superview.superview.superview;
    ...
}Жечь в печах таких людей
−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);
}
            Приспичило мне тут показать кастомный контроллер  в модальном окне. А он вместо контента показывает чушь, расчитанную под другую ширину.
Обнаружено в ходе раскопок.