регистрация в твиттер

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 17:53

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

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: регистрация в твиттер

Сообщение altwin » 30 авг 2014, 17:58

yura91 писал(а):понятно но я просто хочу постараться сделать пусть не в срок но понять основную идею этого у меня есть наметки по интерфейсу андроид по потокам по си да приложение нужно но я просто хочу понять как его делать и запустить хотя бы тот проект который на хабре для наглядности
Я никогда в жизни не поверю что вы имеете хоть малейшее представление о программировании на С или многопоточном программировании и задаете вопросы не просто дилетента а человека который вообще не понимает о чем идет речь. Попробуйте почитать книжку "Java concurrency in practice" и полностью пройти элементарный курс по С - http://c.learncodethehardway.org/book/
Потом просто откройте этот форум и почитайте свои вопросы. Вы очень сильно плаваете в основах и это проблема просто потому, что работая с тем же твитер вы сейчас находитесь на эелементарной стадии - подключении библиотеки и авторизации, это все уже сделали за вас, дале придется писать код самостоятельно.

если вы считаете, что знаете Си, попробуйте разобраться что делает этот ужасно примитивный пример кода:
[syntax=c]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <dos.h>
#include <string.h>

void initialize_graphics_mode();
int get_key();
void draw();

union REGS i, o;

main()
{
int key, i = 0, xpos, ypos, button;
char arr[200], temp[5], *ptr;
char a[] = "C:\\Progra~1\\Mozill~1\\firefox ";

strcpy(arr,a);

i = strlen(a);

initialize_graphics_mode();

draw();

while(1)
{
if(kbhit())
key = get_key();

if((key>=97&&key<=122)||(key>=65&&key<=90)||key==46||key==47||key==63)
{
arr = key;
sprintf(temp,"%c",arr);
outtext(temp);
if(getx()>470)
{
clearviewport();
moveto(5,2);
}
i++;
}
else if ( key == 13 )
{
arr = '\0';
system(arr);
break;
}
else if ( key == 27 )
{
closegraph();
exit(EXIT_SUCCESS);
}
if(button==1&&xpos>=150&&xpos<=480&&ypos>=300&&ypos<=330)
{
system("C:\\Progra~1\\Mozill~1\\firefox startandroid.ru/ru/");
break;
}
key = -1;
}

closegraph();
return 0;
}

void initialize_graphics_mode()
{
int gd = DETECT, gm, errorcode;

initgraph(&gd,&gm,"C:\\TC\\BGI");
errorcode = graphresult();

if( errorcode != grOk )
{
printf("Graphics error : %s\n",grapherrormsg(errorcode));

printf("Press any key to exit...\n");
getch();
exit(EXIT_FAILURE);
}
}

int get_key()
{
i.h.ah = 0;
int86(22,&i,&o);

return( o.h.al );
}

void draw()
{
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(275,11,"Web Browser");
outtextxy(155,451,"<a href="http://startandroid.ru/ru/"">startandroid.ru/ru"</a>);
outtextxy(5,105,"Enter URL : ");
rectangle(120,100,600,130);
setviewport(121,101,599,129,1);
moveto(5,1);
}
[/syntax]
Изображение

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:32

Код: Выделить всё

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <graphics.h>



#include <dos.h>

#include <string.h>

 подключаете библиотеки

void initialize_graphics_mode(); прототип функции вашей

int get_key();тоже прототип

void draw();прототип

 

union REGS i, o;глобальные переменные класса union

 

main() вход в программу

{

  int key, i = 0, xpos, ypos, button;целые переменные

  char arr[200], temp[5], *ptr;массивы чаров и указатель на чар

  char a[] = "C:\\Progra~1\\Mozill~1\\firefox "; строка

 

  strcpy(arr,a);копируете строку в массив

 

  i = strlen(a);узнаете размер строки

 

  initialize_graphics_mode();вызываете функцию

 

  draw();вызываете вашу функцию для графики

 

  while(1) бесконечный цикл

  {

    if(kbhit())

      key = get_key();получаете целое

 

    if((key>=97&&key<=122)||(key>=65&&key<=90)||key==46||key==47||key==63)

    {если целое находится в заданных пределах

      arr[i] = key;
помещаете его в последний элемент массива со строкой
      sprintf(temp,"%c",arr[i]); выводите темп и последний элемент массива

      outtext(temp);системный вывод

      if(getx()>470)

      {

        clearviewport();

        moveto(5,2);

      }

      i++;инкремент цикла

    }

    else if ( key == 13 )

    {

      arr[i] = '\0';

      system(arr);

      break;

    }

    else if ( key == 27 )

    {

      closegraph();

      exit(EXIT_SUCCESS);

    }

    if(button==1&&xpos>=150&&xpos<=480&&ypos>=300&&ypos<=330)

    {

      system("C:\\Progra~1\\Mozill~1\\firefox startandroid.ru/ru/");

      break;

    }

    key = -1;

  }

 

  closegraph();завершение графики

  return 0;завершение программы

}

 

void initialize_graphics_mode()

{

  int gd = DETECT, gm, errorcode;

 

  initgraph(&gd,&gm,"C:\\TC\\BGI");

  errorcode = graphresult();

 

  if( errorcode != grOk )

  {

    printf("Graphics error : %s\n",grapherrormsg(errorcode));

 

    printf("Press any key to exit...\n");

    getch();

    exit(EXIT_FAILURE);

  }

}

 

int get_key()

{

  i.h.ah = 0;

  int86(22,&i,&o);

 

  return( o.h.al );

}

 

void draw()

{

  settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);

  outtextxy(275,11,"Web Browser");

  outtextxy(155,451,"<a href="http://startandroid.ru/ru/"">startandroid.ru/ru"</a>);

  outtextxy(5,105,"Enter URL : ");

  rectangle(120,100,600,130);

  setviewport(121,101,599,129,1);

  moveto(5,1);
Последний раз редактировалось yura91 30 авг 2014, 19:11, всего редактировалось 1 раз.

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:35

ну вот некоторые стандартные функции не знаю но все знать нельзя их описание можно в интернете искать getch знаю ждет ввод с клавиатуры а по андроиду все на английском почему то ну я немного знаю си как вы считаете??

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:36

rectangle тоже задает прямоугольник

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:37

вы используете графическую библиотеку си и программно рисуете фигуры в окне если быть кратким верно??exit завершает программу clearviewport();незнаю settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);сдесь вы задаете стиль текста который потом выводите
Последний раз редактировалось yura91 30 авг 2014, 18:40, всего редактировалось 1 раз.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: регистрация в твиттер

Сообщение Mikhail_dev » 30 авг 2014, 18:37

Вам самому ничего глаз не режет??

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:41

а что должно резать ??

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:42

только клоз граф это завершение рисования на графике closegraph();

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 18:49

хотя код действительно вызвал некоторые затруднения до конца так и не смог его еще разобрать есть незнакомые функции

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: регистрация в твиттер

Сообщение Mikhail_dev » 30 авг 2014, 19:05

yura91 писал(а):а что должно резать ??
Посмотрите как красиво выглядит код у altwin и как ужасно он выглядит у Вас (я про читабельность). Отредактируйте сообщение и добавьте код в соответствующие теги.

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 19:08

и книгу посмотрю полезно будет а есть еще какие нибудь книги статьи не важен язык где подробно описывается процесс авторизации в твиттере и вообще через андроид можете дать ссылку мне интересно ознакомится??А CALLBACK URL это ссылка на то активити в которое мы возвращаемся после авторизации в твиттере верно??щас отредактирую

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 19:13

вот отредактировал а по поводу Callback url это ведь ссылка по которой мы возвращаемся в приложение то есть активити которое соответствующим образом прописано в манифесте и мы через callback в это активити попадаем верно??

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: регистрация в твиттер

Сообщение altwin » 30 авг 2014, 19:38

yura91 писал(а):хотя код действительно вызвал некоторые затруднения до конца так и не смог его еще разобрать есть незнакомые функции
Мне абсолютно не интересно знакомы ли вам языковые конструкции - это вообще никакого отношения к программированию не имеет, любой синтаксис изучается за 3 дня. Во первых в С - нет классов. Во вторых никакие библиотеки никто не подключает, это заголовочные файлы стандартной библиотеки. Причем это принципиально важно. Чтение кода подразумевает понимание того, что происходит, а не построчный разбор вам нужно ответить на вопрос зачем а не что. Об этом я вам и пытаюсь сказать, синтаксис самого языка программирования никому не нужен - это мелочь не достойная внимания. В программировании есть 2 фундаментальные вещи - это структуры данных и алгоритмы. Все остальное вокруг - взаимодействие этих данных через алгоритмы. На сегодняшнем уровне развития никто не реализует взаимодействие с нуля, конечно есть библиотеки но чтобы эти библиотеки работали в первую очередь нужны единые стандарты, не для языка программирования а для реализации обмена данными, по сути стандарт - это единый алгоритм. Вот именно стандартном в том числе протоколы и являются. Т.е. для того, чтобы быть программистом - нужно знать структуры данных и алгоритмы решения классических задач, нужно знать основные и уметь ориентироваться в остальных поротоколах взаимодействия ( и кстати читать их документацию, для чего и нужен английский ). Язык программирования же это не ключевые слова и функции, а инструмент использующий определенные подходы в организации взаимодействия алгоритмов управляющих данными, ООП или процедуры принципиально важно и изучать нужно не синтаксис, а методы решения задач в контексте данной технологии. Двигаться вы должны от обратного т.е. у вас есть задача взаимодействия с внешним сервисом, что вам для этого нужно?
1. Изучить технологию с помощью который вы планируете реализацию, в данном случае java и методы решения задач тут - это ООП. java строит многоуровневую абстракцию и вам нужно идеальное представление о доступных средствах, т.е. наследовании, полиморфизме, инкапсуляции и т.д. и не просто прочитать что это, а понять зачем.
2. Вы должны изучить документацию клиента (тогоже twitter) и определить методы взаимодействия. Каждый используемый протокол вы просто обязанны досконально изучить, особенно если это касается тех, которые используются буквально в каждом приложении вокруг. Это даст вам не более, чем осознанное использование того инструмента, который вам предлагают разработчики twitter.

Эти два пункта - минимум необходимый вам для начала обдумывания архитектуры приложения, т.е. опять используемых структур данных и их взаимодействие. Если в Си - это нискоуровневое перемещение данных из одной области памяти в другую, то java дает вам возможность думать не о реализации, а о функционале, но именно поэтому вам придется столько всего изучать предварительно. Си - простой потому, что не умеет ничего, вам нужно строить все самому, в java же уже построили для вас фундамент, но перед тем как браться за него, придется учиться им пользоваться.

Ваша проблема в простой вещи - вы торопитесь. Каждый вопрос возникающий сегодня - это повод провести доскональное исследование предмета. Забудьте про библиотеки и android вообще. Возьмите и напишите браузер. Потом прочтите простую книжку http://www.ozon.ru/context/detail/id/6722233/ и перепешите свой код. Единственный способ понять -да это опыт, нужно брать и делать, но делать нужно четко понимая что и зачем. Вы не должны думать о методе getInstance(), лучше задайте вопрос почему используется Синглтон. Но для этого нужно знать, что это такое. Чем выше уровень абстракции в языке, тем больше требоваия на вход. Вы можете задавать вопросы и пытаться разбираться по ходу, но это глупо, вы же пытаетесь набить шишки, которые уже сотни раз за вас набили другие. Вам нужно потратить 10 лет на то, чтобы написать первое приложение за которое можно будет заплатить хоть не много денег? Почему вы не хотите использовать опыт миллионов людей? К томуже если вы путаетесь в основах и пытаетесь максимально быстро пройти в перед по принципу лишь бы работало, что вы планируете делать завтра, когда работать оно перестанет? Я могу легко вам ответить, вы будете платить очень большие деньги за то, чтобы оно снова заработало.

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

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 19:40

ну так я и имею ввиду стандартные библиотеки про то что в си нет классов знаю не знаю просто что такое union

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: регистрация в твиттер

Сообщение altwin » 30 авг 2014, 19:41

yura91 писал(а):и книгу посмотрю полезно будет а есть еще какие нибудь книги статьи не важен язык где подробно описывается процесс авторизации в твиттере и вообще через андроид можете дать ссылку мне интересно ознакомится??А CALLBACK URL это ссылка на то активити в которое мы возвращаемся после авторизации в твиттере верно??щас отредактирую
Я третий раз даю вам эту ссылку ;)
Access Token Request
twitter использует протокол описанный именно в этом документе. Т.е. этот текст - фундамент не только для twittera но и для "мордокниги", "vk.com" и 95% других популярных сегодня сервисов.
Изображение

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: регистрация в твиттер

Сообщение altwin » 30 авг 2014, 19:50

yura91 писал(а):ну так я и имею ввиду стандартные библиотеки про то что в си нет классов знаю не знаю просто что такое union
Т.е. вы считаете что знаете язык, когда даже в ключевых вещах путаетесь? Не торопитесь, в том, чтобы не знать чего -то нет ничего плохого. Если бы я хотел, чтобы вы мне рассказали что делается в строчке кода, то спросил бы о том что будет в переменной тут: ;)
[syntax=c]
ihi = y[0]>y[1] ? (inhi=1,0) : (inhi=0,1);

// а еще лучше тут
unsigned int reverse(register unsigned int x)
{
x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
return((x >> 16) | (x << 16));
}
[/syntax]
или пример из реального кода на java (java.util.concurrent.ConcurrentHashMap):
[syntax=java5]return ((h << 7) - h + (h >>> 9) + (h >>> 17));[/syntax]
потому не брезгуйте простыми вещами, основы на то и основы чтобы в них не путаться... знать их нужно обязательно и знать хорошо. :!:
Изображение

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 19:53

хорошо спасибо и еще такой вопрос про многопоточность сдесь на стартандроиде я видел урок в котором в сервисе создавался новый поток чтобы не перегружать основной для использования метода который определен в самом сервисе говорят это нужно что бы не перегружать поток в котором работает пользовательский интерфейс Так вот зачем это нужно если сервис и так работает в отдельном фоновом потоке?? можете обьяснить пожалуйста??

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: регистрация в твиттер

Сообщение yura91 » 30 авг 2014, 19:56

просто интересно могудать ссылку даже в каком уроке?обьясните??

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: регистрация в твиттер

Сообщение altwin » 30 авг 2014, 19:57

yura91 писал(а):хорошо спасибо и еще такой вопрос про многопоточность сдесь на стартандроиде я видел урок в котором в сервисе создавался новый поток чтобы не перегружать основной для использования метода который определен в самом сервисе говорят это нужно что бы не перегружать поток в котором работает пользовательский интерфейс Так вот зачем это нужно если сервис и так работает в отдельном фоновом потоке?? можете обьяснить пожалуйста??
Это нужно смотреть на конкретном примере, какой урок? К примеру если UI получает данные из сервиса, а вы запускаете в нем к примеру 100 млн. запросов, то UI не получит ничего до тех пор, пока не выполнится последний запрос, создавая же там в сервисе новый поток вы можете выполнять запросы группами к примеру по 100 штук практически одновременно и возвращать результат почти без задержек.
Изображение

Ответить