• Как исправить ошибку компиляции в Objective-C?

    morozovdenis
    @morozovdenis
    1. откройте xcode
    2. на панели что находится вверху экрана нажмите debug
    3. выбирите breakpoints
    4. нажмите create exception breakpoint

    таким образов вы увидите на какой строчке падает exception
    Ответ написан
    Комментировать
  • Как в Xcode менять дизайн на iOS 7 NavigationBar и элементы этого NavigationBar?

    morozovdenis
    @morozovdenis
    надо нарисовать самому картинку кнопки back и присвоить в navigationBar

    stackoverflow.com/questions/3506297/custom-back-bu...
    Ответ написан
    Комментировать
  • Как осуществить цикличный проход по каталогу и занесение файлов в массив?

    morozovdenis
    @morozovdenis
    fucntion getFileNames($root)
    {
        $out = array();
        $files = scandir($root);
        for ($i = 0; $i < count($files); $i++)
        {
            $name = $files[$i];
            if ($name == "." || $name == "..")
            {
                continue;
            }
            if (is_dir($root . "/" . $name))
            {
                $out = array_merge($out, getFileNames($root . "/" . $name));
            }
            else
            {
                 $out[] = $name;
            }
        }
        return $out;
    }

    версия без рекурсии
    function convertArray($array, $path)
    {
    	$result = array();
    	for ($i = 0; $i < count($array); $i++)
    	{
    		$result[] = $path . "/" . $array[$i];
    	}
    	return $result;
    }
    
    fucntion getFileNames($root)
    {
    	$out = array();
    	$files = convertArray(scandir($root), $root);
    	while (count($files))
    	{
    		$path = array_shift($files);
    		
    		if (basename($path) == "." || basename($path) == "..")
    		{
    			continue;
    		}
    		
    		if (is_dir($path))
    		{
    			$files = array_merge($files, convertArray(scandir($path), $path);)
    		}
    		else
    		{
    			$out[] = basename($name);
    		}
    	}
    	
    	return $out;
    }
    Ответ написан
    Комментировать
  • Пагинатор. В чем может быть проблема?

    morozovdenis
    @morozovdenis
    $files = ... // получить список файлов в массив
    $files = array("fiel1.txt", "fiel3.txt", "file4.txt"); // например 
    
    $current_page = 1; //например
    $limit = 2;
    
    for ($i = $current_page * $limit; $i < count($files) && $i < ($current_page + 1) * $limit; $i++)
    {
        echo $files[$i];
    }

    выведет:
    file4.txt

    главный замысел в том что мы оперируем в моём примере с со списком файлов и их индексами в этом списке
    Ответ написан
  • Как вставить в переменную два значения?

    morozovdenis
    @morozovdenis
    $sql = 'SELECT * FROM message WHERE (canal="hibye" OR canal="byehi") AND private="1"';
    $message = ... // выполнить запрос
    if ("hibye" == $message["canal"])
    {
        //...
        header('Location: page1.php');
        die();
    }
    else if ("byehi" == $message["canal"])
    {
        //...
        header('Location: page2.php');
        die();
    }
    Ответ написан
    4 комментария
  • Как решить проблемы с получением размера UIView при отключении свойства translucent (ios7)?

    morozovdenis
    @morozovdenis
    1. не используйте UITableViewController - используйте UIViewController. по своему опыту скажу что лучше пусть под таблицей лежит ещё вьюха

    2. старый добрый autoresizing мне до сих пор хватает. что-то сложное лучше 3-мя строчками кода подписать

    |----------------------------|
    |                            |
    |                            |
    |                            |
    |        tableView           |
    |                            |
    |                            |
    |----------------------------|
    |----------------------------|
    |       ToolBarView.         |
    |----------------------------|


    у TableView пропишите autoresizingmask = (UIAutoresizingMaskFlixableHeight | UIAutoresizingMaskFlixableWidth) что соответствует проставлению всех красных маркеров в IB

    у ToolBarView пропишите autoresizingmask = (UIAutoresizingMaskFlixableWidth | UIAutoresizingMaskFlixableTopMargin) что соответствует проставлению следующих маркеров в IB: левый, правый, нижний и горизонтальная стрелка в право-лево
    Ответ написан
    1 комментарий
  • Как реализовать проверку?

    morozovdenis
    @morozovdenis
    например так:
    $sql = "SELECT * FROM successcanal WHERE fieldName = 'bad'";
    $query = mysqli_query($db_conx, $sql);
    $numrows = mysqli_num_rows($query );
    if ($numrows > 0)
    {
        header("Location: other_page.php");
        die();
    }
    Ответ написан
    Комментировать
  • Как пользоваться трассировкой в xCode?

    morozovdenis
    @morozovdenis
    если вы имеете ввиду это - ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D1%81%D1%...

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

    кнопка похожая на play - продолжить выполнение программы(если на её пути встретится очередной breakpoint, то программа опять остановится)

    изгибающаяся стрелка над горизонтальной палочкой - перейти на следующую строку(программа выполнит строчку когда и не продолжит выполнение)

    стрелка вниз указывающая в палку - войдёт в функцию/метод находящуюся на текущей строчке выполняемой строчке кода
    Ответ написан
    1 комментарий
  • UITableView - как прикрутить комментарии к записям?

    morozovdenis
    @morozovdenis
    я бы сделал два типа ячейки с разным дизайном, в смысле ячейка первого типа представляет пользователя, а ячейка второго типа представляет комментарий. соответственно у них разные отступы, разная высота и т.д.

    если нужно что-бы ячейки раскрывались/закрывались и/или отображались только например 3 последних комментария, то по нажатию на кнопку "раскрыть комментарии" вызывать метод reloadData и пусть перестроит видимую часть таблицы

    UPD:
    Вам нужно в сториборде создать две разных ячейки и присвоить им в настройках два разных ReuseIdentifier-а(например UserCell для ячейки юзера и CommentCell для ячейки комментария). Потом прописать делегаты для кол-ва секций и кол-ва ячеек в каждой секции:
    #pragma mark - UITableViewDataSource
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return self.users.count;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return self.users[section].comments.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    	if (indexPath.row == 0)
    	{
    		UITableViewCell *cell = [[self tableViewAllCheckins] dequeueReusableCellWithIdentifier:@"UserCell"];
    		
    		NSDictionary *userInfo = self.users[indexPath.section];
    		
    		// заполнение ячейки User-а
    		
    		return cell;
    	}
    	else
    	{
    		CommentViewCell *commentCell = [[self tableViewAllCheckins] dequeueReusableCellWithIdentifier:@"CommentCell"];
    		
    		UserInfo *userInfo = self.users[indexPath.section];
    		
    		CommentInfo *comment = userInfo.comments[indexPath.row - 1]; // так как нулевая ячейка в секции принадлежит пользователю, а первая ячейка принадлежит нулевому комментарию, то надо сделать минус 1
    		
    		// заполнение ячейки Comment-а
    		
    		return commentCell;
    	}
    }
    Ответ написан
    8 комментариев
  • Android. Как получить с web-страницы первые 20 килобайт?

    morozovdenis
    @morozovdenis
    у HTTP есть параметр Range, используя его вы можете скачать только первые N нужных байт
    Ответ написан
    Комментировать
  • IOS - как осуществить игровую анимацию на заднем фоне?

    morozovdenis
    @morozovdenis
    навскинду два варианта сразу приходят на ум:

    1. реализовать свою view которая будет отображать список картинок по очереди и при этом не сразу загружать их все, а нужные подгружать когда нужно, а просмотренные выгружать из памяти

    2. собрать это в видос и запустить его на заднем плане

    я сделал бы первый вариант, он гибче. в первом варианте ничего не надо дополнительно собирать если кол-во кадров и/или сами кадры изменятся

    //как-то так должен выглядеть MyImagesView.m файл
    
    @interface MyImagesView ()
    
    @property (nonatomic, strong) UIImageView *imageView;
    
    @property (nonatomic, assign) int currentImage;
    @property (nonatomic, assign) int totalImages;
    
    @end
    
    @implementation
    
    /*
     * этот метод надо вызывать в таймере. обязательно в Main Thread
     */
    - (void)showNextImage
    {
    	assert([NSThread isMainThread] == YES);
    	
    	self.currentImage ++;
    	if (self.currentImage == self.totalImages)
    	{
    		// что бы отображать картинки циклически
    		self.currentImage = 0;
    	}
    	
    	UIImageView *newImageView = [[UIImageView alloc] initWithFrame:self.bounds];
    	newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
    	
    	[self.imageView removeFromSuperview]; // убираем прирыдущий кадр из view-хи (затираем сильную ссылку номер 1)
    	self.imageView = nil; // убираем сильную ссылку номер два (тут UIImageView должна выгрузиться из памяти, а с ней и UIImage)
    	
    	[self addSubview:newImageView]; // закидываем новый кадр во view-ху (создаём сильную ссылку номер 1)
    	self.imageView = newImageView; // сохраняем ссылку на новый кадр что бы иметь в следующем вызове метода showNextImage ссылку на предыдущий кадр  (создаём сильную ссылку номер 2)
    }
    
    @end


    UPD:
    попробуйте заменить:
    newImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_name%i.png", self.currentImage]];
    на:
    NSString *imageName = [NSString stringWithFormat:@"image_name%i", self.currentImage];
    newImageView.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"png"]];
    Ответ написан
  • Как осуществить перенос из PHP-файла переменной в JS-файл?

    morozovdenis
    @morozovdenis
    <?php
    
    $data = array(
        array(
            'title' => 'Arduino #1',
            'id' => 1,
            'image' => 'http://www.casemods.ru/templates/images/texts/3_4119479.jpg',
            'top' => 200,
            'left' => 300,
            'width' => 800,
            'height' => 760,
            'points' => array(
                'id' => 1,
                'objectId' => 1,
                'top' => 300,
                'left' => 500,
                'tip' => 500,
            ),
        ),
        array(
            'title' => 'Arduino #2',
            'id' => 2,
            'image' => 'img/objects/arduino.png',
            'top' => 200,
            'left' => 300,
            'width' => 800,
            'height' => 760,
            'points' => array(
                'id' => 1,
                'objectId' => 2,
                'top' => 300,
                'left' => 500,
                'tip' => 500,
            ),
        )
    );
    ?>
    <script type="text/javascript">
    var data = <?php echo json_encode($data); ?>;
    console.log(data[0]["title"]);
    </script>
    Ответ написан
    Комментировать
  • MVC в IOS: может ли Model иметь Delegate к контролеру?

    morozovdenis
    @morozovdenis
    Любому объекту вы можете присваивать в делегат любой другой объект, это не нарушает ни какие другие паттерны и т.п.

    //файл A.h
    
    @protocol ADelegate <NSObject>
    
    - (void)aDelegateMethod;
    
    @end
    
    @interface A : NSObject
    
    @property (nonatomic, weak) id<ADelegate> delegate;
    /*
    Описывая делегат таким образом мы скрываем объект за протоколом ADelegate.
    В вашем случае модель не будет знать что у неё делегат это контроллер, модель будет
    думать что там есть некий объект который отвечает на ADelegate протокол и кто там конкретно не важно
    */
    
    @end


    //файл B.h
    
    #import "A.h"
    
    @interface B : NSObject <ADelegate>
    
    @end


    //файл B.m
    
    @implementation B
    
    - (void)foo
    {
        A *a = [A new];
        a.delegate = self;
    }
    
    #pragma mark - ADelegate Protocol
    - (void)aDelegateMethod
    {
    }
    
    @end
    Ответ написан
    Комментировать
  • Как разобратся с моим кодом?

    morozovdenis
    @morozovdenis
    NSString * hexFromDex(int a)
    {
    	return [NSString stringWithFormat:@"%X", a];
    }
    Ответ написан
    Комментировать
  • Как найти пересечение фигур?

    morozovdenis
    @morozovdenis
    что бы узнать пересекаются или нет окружность и треугольник нужно решить 3 системы уравнений:

    первая:
    (x-x0)^2+(y-y0)^2=R^2
    (y-Ay)/(By-Ay)=(x-Ax)/(Bx-Ax)

    вторая:
    (x-x0)^2+(y-y0)^2=R^2
    (y-Cy)/(By-Cy)=(x-Cx)/(Bx-Cx)

    третья:
    (x-x0)^2+(y-y0)^2=R^2
    (y-Cy)/(Ay-Cy)=(x-Cx)/(Ax-Cx)

    где x0,y0 центр окружности
    A, B и C - координаты вершин треугольника

    и если хоть одна имеет решение, то пересикаются
    Ответ написан
    Комментировать
  • Каким способом лучше пользоваться при проверке переменной?

    morozovdenis
    @morozovdenis
    в первом случае isset проверяет существование переменной и если $r будет существовать, то в не зависимости от значения переменной $r условие будет работать

    во втором случае условие проверяет что $r истина и только когда переменная истина условие будет работать

    работает когда $r = true, false, 1, 2, -1000000, 'asdf' и т.д.
    if (isset($r))
    {
    echo "Текст";
    }


    работает когда $r = true, 1, 2, 1000, 'asdf' и т.п.
    if ($r == true)
    {
    echo "Текст";
    }


    работает когда $r = true и только
    if ($r === true)
    {
    echo "Текст";
    }
    Ответ написан
    Комментировать
  • Какие есть платформы для создания 2D-игр?

    morozovdenis
    @morozovdenis
    Microsoft XNA
    Не плохая C# обёртка над Direct-X и как следствие только Windows и XBOX. В отличии от Unity 3D есть нормальная поддержка 2D

    msdn.microsoft.com/en-us/aa937791.aspx
    xna.gamedev.ru
    www.xnadev.ru/news.php
    Ответ написан
  • Как реализовать объявление двумерного массива?

    morozovdenis
    @morozovdenis
    указатели:

    int n, m;
    int **a;
    
    //read n
    //read m
    
    a = (int **)malloc(sizeof(int *) * n);
    for (int i = 0; i < m; i++)
    {
    	a[i] = (int *)malloc(sizeof(int) * m);
    }
    
    for (int i = 0; i < n; i++)
    {
    	for (int j = 0; j < m; j++)
    	{
    		a[i][j] = 1;
    	}
    }


    std::vector

    std::vector< std::vector<int> > a;
    
    int n, m;
    
    //read n
    //read m
    
    for (int i = 0; i < n; i++)
    {
    	std::vector<int> v(m);
    	for (int j = 0; j < m; j++)
    	{
    		v[j] = (i + j);
    	}
    	a.push_back(v);
    }
    
    std::cout << a[3][3] << std::endl;
    Ответ написан
  • VK API: как проверить, что access_token соответствует uid при минимальных разрешениях?

    morozovdenis
    @morozovdenis
    вот что я сделал:

    vk.com/dev/users.search - вот на этот запрос нужен access_token и таким образом сделав сюда запрос можно проверить валидность access_token-а

    url:
    https://api.vk.com/method/users.search?access_token=<access_token>&sig=<sig>


    где sig
    sig = md5('/method/users.search?access_token=<access_token>' + SECRET)


    + это конкатенация
    SECRET это поле secret из структуры VKAccessToken iOS(Android)
    Ответ написан
    Комментировать