Jestli chceš mít jednou magisterský titul, tak to prostě musíš zvládnout sám. Hlavně se snaž. Sežeň si kvalitní doučování, nebo pozvi kámoše na pivko do hospody, který ti to vysvětlí a pomůže ti s danou problematikou.
Příspěvky odeslané z IP adresy 95.82.185.–
Zdravím,
1) máme tam hlavičkový soubor <avr/pgmspace.h>?
2) chybný zápis
- máme dvojí základní zápis toho, buď tam budeme mít hvězdičku (ukazatel), tedy
char * logo PROGMEM = {}
- nebo musíme určit přesný počet prvků bez hvězdičky (ukazatele) tedy
char logo[10] PROGMEM = {}
3) s největší pravděpodobností chybí const (píše se na začátek), tak jak píše překladač
Jo a jenom dodám, že lepší je použití unsigned char.
Zdravím,
vždyť je jedno, kde se to vypisuje - kde to běží.
Pokud to běží na localhostu, tak to poběží i na ostrém serveru. Jediný rozdíl bude v připojení k databázi. Samozřejmě také musíme databázi na ostrém serveru založit/vytvořit, tak jak to máme na localhostu. Pak už stačí zkontrolovat, jestli data na ostrém databázovém serveru máme, tudíž zda-li se má co vypisovat.
Zdravím,
URL můžeme změnit dvěmi způsoby (bez refreshe a s refreshem). My potřebujeme pouze první způsob.
bez refreshe - všechno tedy zpracujeme na úrovni Javascriptu/Ajax, používáme # (hashtag)
document.location.hash = "about";
window.onhashchange = function() {
var myhash = document.location.hash;
if (myhash == "#about") about();
}
Zdravím,
snaží se ti zde poradit největší bouráci (vitamin a hlucheucho) z problematiky vývoje tady na serveru programujte.com a spíše mám takový pocit, že se neumíš dobře postavit k problému. Mimochodem přenositelnost překladačů je velmi známý pojem. Až se vyřeší u tebe ta přenositelnost, tedy půjde to nahodit, tak máš vyhráno. Jiný problém doposud nevidím.
Ano, takto jak to teď máme, tak se může opravdu zapříčinit to, že poběží na pozadí x formulářů (objektů) - což je fail pro paměť a aplikace by brzy zkolabovala - což nechceme.
My tedy chceme a potřebujeme, aby se nám držely dvě instance a to je celé. Není to příliš složité, jak jsem poznamenal, tak teď těch instancí může být x a to z toho důvodu, že voláme operátor new (vytvoření nové instance - formuláře) v té události Click (to tedy ideální není). Nám stačí si ukládat (vytvořit) ten odkaz (FormHraPrepnuti a FormMenuPrepnuti) třeba v konstruktoru a máme vystaráno. Pro ukázku:
public class MojeHerniTrida
{
protected FormHra FormHraPrepnuti;
public MojeHerniTrida()
{
FormHraPrepnuti = new FormHra();
}
}
Rozumíme si?
Zdravím,
1] takže toto nepomáhá?
class Canvas : Control {
public Canvas() { DoubleBufferred = true; }
}
http://stackoverflow.com/questions/8046560/how-to-stop-flickering-c-sharp-winforms
2] Co použít Close událost (tím pádem to zanikne) a při tomto handleru si vytvoříme nový form?
form1.Close += createNewForm;
public void createNewForm(EventsArg e) { ... }
Zdravím,
pokud správně rozumím problému, tak se to dá opodmínkovat třeba v php:
<?php if (index) { ?>
<link rel="stylesheet" href="css/style.css" type="text/css">
<?php } elseif (stranka) { ?>
<link rel="stylesheet" href="css/stranka.css" type="text/css">
<?php } ?>
Já osobně tohle nikde neřeším, ale pokud to funguje tak jak má, tak to nech a nepředělávej to do té hrůzy, kterou jsem poslal.
Zdravím,
nešel jsem na pivko, tak jsem ti teď udělal celý program i s tím výpisem. Stačí prostě a jistě v tom Bubble sortu na začátku porovnávat ty číselné hodnoty té dané struktury (tedy čísla, ne řetězce) a pak se prohodí již celé ty struktury.
#include <iostream>
using namespace std;
struct Porucha
{
string zacatek;
string konec;
string poznamka;
};
int casNaMinuty(string retezec) {
int h, m;
sscanf(retezec.c_str(), "%d:%d", &h, &m);
int minuty = (h * 60) + m;
return minuty;
}
void seraditDleCasu(Porucha * p, int velikostPole) {
bool seradit = true;
while (seradit) {
seradit = false;
for (int i = 0; i < (velikostPole - 1); i++) {
if ( casNaMinuty((*(p + i)).zacatek) > casNaMinuty((*(p + i + 1)).zacatek) ) {
seradit = true;
Porucha temp = (*(p + i));
(*(p + i)) = (*(p + i + 1));
(*(p + i + 1)) = temp;
}
}
}
return;
}
void vypsat(Porucha * p, int velikostPole) {
for (int i = 0; i < (velikostPole); i++) {
cout <<
"start: " << (*(p+i)).zacatek << ", konec: " << (*(p+i)).konec << ", pozn.: " << (*(p+i)).poznamka << endl;
}
}
int main(int argc, char *argv[]) {
Porucha struktury[4] = {
{"13:08", "13:55", "oprava 1"},
{"11:59", "14:59", "oprava 2"},
{"22:00", "23:00", "oprava 3"},
{"08:02", "09:20", "oprava 4"}
};
seraditDleCasu(struktury, 4);
vypsat(struktury, 4);
system("PAUSE");
return EXIT_SUCCESS;
}
Takhle to povím, dá se to udělat, já bych to třeba naimplementovat dokázal, ale to je to poslední, spíše jde o to to pochopit. Je to samozřejmě horší na implementaci... Lepší, než vysvětlování bude asi odkaz:
http://stackoverflow.com/questions/1559808/paypal-api-send-money-to-any-paypal-account
Vyhovující? :)
No, já se spíš snažím naznačit, že pokud uděláme pouhé nabití peněženky, tedy něco ve smyslu:
$query = sprintf("UPDATE users SET penezenka = penezenka + $_GET['amt']
WHERE id_user = '%s'", mysql_real_escape_string($id_user));
Tak změníme sice hodnotu, ale zpětně nikdy nebudeme vědět za co.
Nezapomeň si někam ukládat historii transakcí. Tedy koncové stavy. A pak vidíš další stav peněženky a jaká akce se stala, to znamená:
ID_TRANSAKCE | AKCE | ID_USER | ODEBRANA_CASTKA | KONCOVY_STAV | DATUM
1 | DOBITI_PENEZENKY | 2 | 500 | 2000 | 4.10.2010
2 | DOBITI_PENEZENKY | 2 | 500 | 1500 | 4.10.2010
Jinak přes ten IF to taky můžeš udělat... :-)
No vidíš to, přišla ti odpověď co se týče ID transakce (hash), status (tedy jestli na to měl dotyčný peníze, nebo co provedl za akci), částka, měna a id subjektu.
S tím se dá samozřejmě pracovat, a nemusíš ani nikam přesměrovávat jak píše KIIV. Prostě ten výstup zpracuješ (tedy zpracuješ výstupní url). Nikdo to URL neví, takže buď v pohodě -- protože to url je zašifrované... což je zabezpečovací proces.
Takže si uděláš pak switch v tom souboru něco jako:
if (isset($_GET)) {
switch ($_GET['st']) {
case "Completed":
// uložíme danému uživatelovi peníze na účet:
$user->getUserById($id_user)->setVallet($_GET['amt']);
break;
}
}
Zdravím,
proč utrácíš dolary? Dá se tam použít ten testovací sandbox account, který nevezme nic.
Funguje to tak všude, klient pošle požadavek a ty dostaneš od paypal odpověď.
Jo a Tobě to vlastně nevrací zpět, narvi tam tento kus kódu ještě (nestačí jen tlačítko):
<input type='hidden' name='return' value='http://mysite.com/user_credits/purchase_credits'>
<input type='hidden' name='rm' value='1'>
A nebo prostě v tom nastavení musí být... udělej tyto kroky (je to anglicky):
1. Log in and click the Profile subtab under My Account.
2. Click the Website Payment Preferences link under Selling Preferences.
3. Click the On radio button to enable Auto Return.
4. Enter the Return URL. Note: You must meet the Return URL requirements in order to set up Auto Return.
Takže tak, snad nemusím překládat.
Zdravím,
potřeboval bych odkazy na nějaké examples (ukázky) vyjížděcího panelu (slider). Abych upřesnil, mějme na levé straně div, kde je napsáno info. Když na něj najedem myší, tak vyjede. Já vím, že je to jako klasické menu, ale na boku... jen bych ho chtěl pěkné, s animací a aby mě nadchlo. Není důležité, aby plavalo s contentem (obsahem). Jenom tak úplně nevím, jaké keywords (slider?) zadat do G, díky.
Takhle to naznačím: http://mobilni-site.cz/bin/example-bar.png
Dobrý den,
potřeboval bych udělal toto ( http://citypark.cz/…oga_pruh.swf?… ), ale pomocí jQuery nebo JS.
Jak na to? Děkuji...
DLL injection tutorial
Zdravím,
nejspíš jsem měl tento dotaz směrovat spíše do sekce JavaScriptu, ale když PHP čte víc lidí, tak to hodím sem.
Má někdo zkušenosti s videostreamem/konferencí one to one na webovkách? Něco free. Tak, jak vlastně máme Skype, tak toto by byla webová služba. Něco podobného jsem našel kdysi na chatu http://chat.libimseti.cz.
Nechci to spouštet na žádném RS/CMS (Joomla, WordPress, ...), ale normálně na svém webu. Našel jsem (prozatím) pouze toto: http://www.tokbox.com a nově jquery webcam plugin: http://www.xarg.org/project/jquery-webcam-plugin.
Budu rád za každé rady, odkazy a zkušenosti, díky.
Vždycky je nejlepší si projít internet. Dá se to napsat třeba v C/C++/C#.
Posílám pár užitečných odkazů:
- http://www.codeproject.com/Articles/14044/SAPI-with-Microsoft-Agent-and-Visemes-to-Explain-T
- http://stackoverflow.com/questions/8392826/disabling-main-speech-recognition-in-sapi-5-3
- http://www.codeproject.com/Articles/13022/Writing-SAPI-5-1-Apps-in-CSharp
- http://www.c-sharpcorner.com/UploadFile/ggaganesh/BuildingTextSpeechApplicationsusingSAPI5.1andCSharp11222005235840PM/BuildingTextSpeechApplicationsusingSAPI5.1andCSharp.aspx
- http://msdn.microsoft.com/en-us/library/ms720163(VS.85).aspx
- http://stackoverflow.com/questions/11935533/c-sharp-sapi-5-4-languages
- http://stackoverflow.com/questions/227140/c-sharp-speech-recognition-is-this-what-the-user-said?lq=1
Zdravím,
těch možností je plno, ale jak píše KIIV, system("PAUSE") má strašně moc nevýhod. Nejvíc mi na tom vadí, že to tak učí na školách a kdekoliv možně...
Pro C používám f-ci getchar(). Pro C++ potom f-ci cin.get().
system("PAUSE") dělá v pár krocích:
- pozastaví se náš program
- zavolá se OS
- otevře se shell
- OS musí najít příkaz PAUSE
- musí se alokovat paměť pro provedení
- musí se spustit příkaz a čekání na stisk
- navrátit paměť (dealokace)
- ukončení práce s OS
- obnovení programu
Jednoduchá funkce:
void pause(void)
{
printf("\n Stisk klávesy pro ukončení...");
fflush(stdout);
while('\n' != getchar());
}
int size = 1;
int* arr = new int[1];
void resize()
{
size_t newSize = size * 2;
int* newArr = new int[newSize];
memcpy( newArr, arr, size * sizeof(int) );
size = newSize;
delete [] arr;
arr = newArr;
}
Klasická funkce pro kopírování paměti - memcpy (je to v C). Trošku zaměňuji C a C++, ale to snad nevadí (viz. nahoře operátor new). V metodě main po každém načtení čísla zavoláš metodu resize.
Zdravím,
sleepy, jdeš na to dobře, ale... co třeba klíčové slovo static? To je dosti důležité při použití Singletona... ;)
Klasický postup je takový, že u té metody getInstance() hodíš teda static. Potom samozřejmě uděláš privátní konstruktor a kopírovací konstruktor (klon), aby nemohla být vytvořena instance jiným způsobem. ;)
Stačí takto:
private Singleton() { }
Takhle je to i s tím ošetřením, jde to?
#include <cstdlib>
#include <iostream>
using namespace std;
bool check(int long number)
{
return ((number % 10 != 0) && (number % 10) != 1);
}
int main()
{
long int bin1, bin2;
int i = 0, zbytek = 0, sum[20];
cout << "Zadejte prvni bin. cislo: ";
cin >> bin1;
while( check(bin1) )
{
cout << "Spatny vstup - zadejte znovu: ";
cin >> bin1;
}
cout << "Zadejte druhe bin. cislo: ";
cin >> bin2;
while( check(bin2) )
{
cout << "Spatny vstup - zadejte znovu: ";
cin >> bin2;
}
while ((bin1 != 0) || (bin2 != 0))
{
sum[i++] = ((bin1 % 10) + (bin2 % 10) + zbytek) % 2;
zbytek = ((bin1 % 10) + (bin2 % 10) + zbytek) / 2;
bin1 = bin1/10;
bin2 = bin2/10;
}
if (zbytek != 0) sum[i++] = zbytek;
--i;
printf("Soucet dvou binarnich cisel je: ");
while (i >= 0) printf("%d", sum[i--]);
system("PAUSE");
return 0;
}
Takhle je to neprofesionálně, v C++ by se to mělo dělat pomocí cin.fail a cin.clear (jak píše vitamin). Ale každopádně toto můžeš taky poslat.
Nechci se nějak dotknout vitamina, to co napsal pomocí stavového automatu je východisko a možné řešení, ale pro takto jednoduchý příklad stačí něco takového (zatím jenom hodně pseudo a z hlavy):
bool check(long int number, int search_1, int search_2)
{
while (number > 0)
{
int digit = number % 10;
number = number / 10;
if (digit != search_1 && digit != search_2) return false;
}
return true;
}
Poté tu funkci zavoláme:
std::cout << check(10101010, 1, 0) << " \n";
Takže teď to udělá to, že 10101010 to vezme, ale 10101012 to nevezme. Problém nastane, pokud zkusíme otestovat 00101010 (na začátku je nula, to pak reprezentuje oktanové číslo). To budu muset ještě promyslet. Je to vlastně to, co napsal vitamin výše... Zkoušel jsi to vitamine pro vstup 01010101?
Tak funguje, takže chválím nakonec vitamina za pěkné řešení!
Takže jenom zkrátím pro úplnost:
bool check(int long number)
{
return ((number % 10 != 0) && (number % 10) != 1);
}
Zdravím,
už několikrát tu byly obdobné diskuse (co se týče tohoto serveru):
http://programujte.com/forum/vlakno/1487-programovani-her-v-c/
http://programujte.com/forum/vlakno/4435-programovani-os/
http://programujte.com/forum/vlakno/1857-programovani-her/
http://programujte.com/forum/vlakno/6825-c-nebo-c/
http://programujte.com/forum/vlakno/20855-c-nebo-c/
Jinak nechápu, proč v dnešní době si ty informace neumí člověk dohledat (Google). Zkus se seznámit s těmito pojmy:
OpenGL (GLUT), DirectX, SDL, Allegro.
Ale pro jednoduchou 2D hru postačí zmiňované SDL. Pro 3D potom OpenGL.
Programovací jazyk určitě C++.
Zdravím,
přesně tak jak píše ingiraxo. Je to pořád na stejné brdo.
Pokud máte použít STL, tak potom použiješ vector, nebo list. Pokud ne, tak si budeš muset poradit se spojovým seznamem sám. Častokrát se to řeší i třebas pomocí pole objektů, prostě jak je libo...
Ale už jdu spát, takže jenom malý nástin:
class User
{
private:
string name;
string surname;
int age;
};
class MyLinkedList
{
private:
struct Node
{
Node * next;
User * u;
};
};
No a samozřejmě se dodělají metody nad tím listem (MyLinkedList), takže add, remove, atd.
Zdravím, na pár řádků (a to čisté C nemám moc rád):
#include <stdio.h>
#include <stdlib.h>
int main()
{
long int bin1, bin2;
int i = 0, zbytek = 0, sum[20];
printf("Zadejte prvni binarni cislo: ");
scanf("%ld", &bin1);
printf("Zadejte druhe binarni cislo: ");
scanf("%ld", &bin2);
while ((bin1 != 0) || (bin2 != 0))
{
sum[i++] = ((bin1 % 10) + (bin2 % 10) + zbytek) % 2;
zbytek = ((bin1 % 10) + (bin2 % 10) + zbytek) / 2;
bin1 = bin1/10;
bin2 = bin2/10;
}
if (zbytek != 0) sum[i++] = zbytek;
--i;
printf("Soucet dvou binarnich cisel je: ");
while (i >= 0) printf("%d", sum[i--]);
system("PAUSE");
return 0;
}
Proč nad tím tak bádáte? Stačí se trochu zamyslet... To zbytečné uzávorkování tam být nemusí, pro přehlednost jsem raději doplnil. V C++ to jde napsat i do pěti řádků. :-)
Zdravím,
jestli chceš zjistit o jakou výherní kombinaci jde, tak to není těžké zjistit.
Vezmeš hráčovy karty (2). Vezmeš všechny karty ze stolu (5).
Tudíž, budeš kombinovat a procházet ze 7 karet... :)
Já osobně bych to udělal tak, že bych si ke každé výherní kombinaci (vysoká karta, jeden pár, dva páry, trojice, postupka, barva, FH, poker, postupka v barvě a královská postupka v barvě) udělal metodu, která by vracela True, nebo False v rámci úspěšnosti. Je třeba si uvědomit, že pokud chytíme Full House, tak zároveň máme trojici. Proto musíme vyhodnocovat postupně dle priority.
Vidím, že to děláš v C#, tak zkusím tu myšlenku:
bool vysokaKarta()
{
foreach($karty as $index => $hodnota)
{
// algoritmus pro hledání vysoké karty
if (...) return true;
}
return false;
}
bool jedenPar()
{
foreach($karty as $index => $hodnota)
{
// algoritmus pro hledání jednoho páru
if (...) return true;
}
return false;
}
Pak někde v Mainu
=====
if (Poker.kralovskaPostupka())
{
máme královskou;
};
if (Poker.postupkaBarva())
{
máme postupku v barvě;
};
a tak dále pro ostatní kombinace...
if (Poker.vysokaKarta())
{
máme vysokou kartu;
};
Ahoj,
sháním kvalitní knihovnu nebo Tool, který nabízí analýzu zdrojového kódu. Vesměs mi jde o to, že chci hledat v kusu zdrojáku nějaké cílové věci... Jaké možnosti se nabízí?
Dělám v Microsoft Visual C# Express 2010.
Zdravím,
chtěl bych se zeptat, jak navrhnout toto:
Mám své dvě třídy, které v sobě uchovávají již hotovou a známou třídu Socket. Můžeme si to implementačně představit třeba takto:
class SocketClient : Form
{
Socket sClient = null;
SocketClient()
{
sClient = new Socket(...);
}
};
class SocketServer : Form
{
Socket sServer = null;
SocketServer()
{
sServer = new Socket(...);
}
};
Jak toto navrhnout? Myslím tím normálně diagramové vyjádření tříd, schéma.
Protože pak může klidně existovat i něco takového:
class SocketClient : Socket
{
};
class SocketServer : Socket
{
};
K tomuto bych přirovnal následující schéma: http://www.magic.ubc.ca/496/pmwiki/uploads/SSF09W-04/SocketClassDiagram.jpg
Na tomto URL se nachází přesně co? Zobecnění, nebo dědění?
Předem díky za přehledné objasnění.
Myslím tím metodu Send, která je už klasicky v API. Tato metoda je synchronní... nemusí být asynchronní.
No, nejspíš jsem to myslel takto:
- Metoda BeginReceive vrací IAsyncResult a čeká na data;
- Pokud to vrátí (nastala událost - přišly data), zavolá se callback;
- Jedním z parametrů callbacku je IAsyncResult, kde si to vyzvedneme (jde vlastně o return BeginReceive);
- Zavoláme int receiveBytes = sock.EndReceive(asyn);
- Tím si přečteme, kolik jsme dostali bytů na socketu;
- V případě potřeby počkáme na další data (znovu BeginReceive).
Správná domněnka?
Zdravím,
od veškerých odborníků v branži IT jsem dostal různé odpovědi. Byl bych rád, kdybych si to mohl už konečně nějak reálně sjednotit a mohl na to koukat z jednoho úhlu.
Potřebuji přesně vědět, jak fungují asynchronní metody BeginReceive a EndReceive na socketové bázi. Setkáme se tedy s následujícími metodami:
- BeginReceive,
- EndReceive,
- Callback.
Jde mi o celý postup principiálně:
- co běží v hlavním vlákně, co v pracovním,
- jakým způsobem, kdy a proč se volá callback,
- jaké metody (viz. nahoře) jsou blokované, a které nejsou,
- pokud zavolám metodu Send, na co bude směřovat.
Nejvíc bych uvítal postup v rámci kroků, to jest:
- zmáčkneme spojku,
- zařadíme rychlost,
- pouštíme spojku, přidáváme plyn.
Pokud bude k mání i nějaký náčrt (image), další věc, co pomůže.
Zdravím,
potřeboval bych zobrazit proměnnou i (ve FOR cyklu) do Labelu každou sekundu, je to nějak možné? Potřeboval bych vědět, jaké se nabízí možnosti a jak to implementovat.
Protože pokud běží for cyklus od 0 do 9999, tak se mi zobrazí 9999. Jde to bez časovače?
Dle mě se nabízí:
- zablokování (pausnutí) iterace každou sekundu,
- použití časovače který updatuje UI každou sekundu.
Zkoušel jsem něco takového:
DateTime start = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
DateTime end = DateTime.Now;
if (start.Second != end.Second)
{
start = end;
label1.Text = i.ToString();
}
}
Application.DoEvents? Díky.
Zdravím,
neznáte někdo (třeba online webový) NÁSTROJ/FILTR, který Vám vyhledá volné/obsazené domény na základě vašich klíčových slov?
Zadáte kupříkladu 5 klíčových slov (znaků) a ono se to bude snažit poskládat a vyhledat domény. Důležité je, aby to umělo OR, ne jenom AND. Je mi jedno v jakém jazyce to bude - více upřednostňuji EN. To, že Vás otravuji... to se samozřejmě omlouvám, ale nic kloubného jsem nevygůglil. Víc hlav víc ví...brainstorming.
Třeba tohle je (docela) dobrý: http://www.volne-domeny.info
Ale...
Hledá to zmíněným systémem AND, neumí to OR.
Vstup třeba (3 klíčová slova): chat i x
Výstup:
- chat.xxx,
- ichat.xxx,
- xchat.xxx,
- ixchat.xxx,
- atd.
Díky.
Zdravím,
o co jde? Mám na webu nějaké obrázky, resp. v databázi mám jenom URL a ty pak načítám. Mám funkci, která má konstantní velikost výšky a podle poměru nastavuje výšku. Problém je v tom, že to strašně dlouho trvá - je to pomalé. Jak se to dá obejít?
Ta funkce vypadá takto:
function resizeImage($image_path, $new_height) {
list($width, $height, $type, $attr) = getimagesize($image_path);
$ratio = $new_height/$height;
$new_width = $ratio * $width;
return $new_width;
}
<img src=\"".$z['LINK_THUMBNAIL']."\" alt=\"".$z['NAME']."\" height=\"140\" width=\"".resizeImage($z['LINK_THUMBNAIL'], 140)."\" >
1) Podle mě to jde řešit tak, že tou funkcí projedu každý neupravený obrázek jenom jednou, ten si pak někam uložím a budu pouze načítat již ty upravené thumbnails... Nebudu zbytečně po každém reloadu volat tu funkci.
2) Pak jsem slyšel o BLOB objektu v Databázi - jenom z doslechu, o co jde?
Jiné náměty? RePRO.
Zdravím,
chtěl bych provést dva dotazy (snad jednoduché).
1. dotaz - Nejlépe hodnocené video
Budeme pracovat s jednou tabulkou VIDEO. Tam má sloupce VOTE_UP a VOTE_DOWN. No a já bych to potřeboval seřadit dle VOTE_UP - VOTE_DOWN. Tedy nějak ORDER BY rozdíl DESC mezi těmito dvěmi hodnotami.
2. dotaz - Nejkomentovanější video
Budeme pracovat s dvěmi tabulkami.
První tabulka je VIDEO, druhá tabulka je KOMENT (ID_KOMENT, CIZI_KLIC_ID_VIDEO). A já bych potřeboval samozřejmě to seřadit dle SUMY STEJNÝCH CIZÍCH KLÍČŮ (tedy nějak asi ORDER BY SUM VŠECH STEJNÝCH CIZÍCH KLÍČŮ).
Jak to bude vypadat - jak to dát dohromady? Moc děkuji.
O co se zajímáš právě ty? Dělám menší statistiku, díky.
programování webových aplikací (PHP, MySQL, JavaScript, jQuery, CSS, HTML, ...)
programování desktopových aplikací (Java, C#, Borland C++)
programování systémových aplikací (C/C++, ovladače, add-ons, OS, systémové prostředky, antivirové programy, komprese dat)
Můžeš klidně i popsat...
KIIV, čauves. :)
Tohleto se načte (samozřejmě nenaformátované):
<body onload = "nactiText('<?php echo "Text ... můj Text"; ?>');">
Pokud se snažím o něco takového:
// Data z DB
$text = htmlentities($zaznam['obsah']);
<body onload = "nactiText('<?php echo $text; ?>');">
Tak se mi to nenačte prostě... Ve zdrojáku mám něco takového (ukázka konce - nevím, proč tam je ten konec té funkce?)
<li>m&eacute; hodnocen&iacute;: <strong>4/10</strong></li>
</ul>');">
Díky za snahu.
Zdravím,
potřebuju načítat data do tinymce již naformátované...
Kde je problém? Pokud načítám kód, kde jsou "" (uvozovky), tak to nevalí. Pokud načítám z databáze holý text (bez uvozovek), tak ho načtu. Ale to není cílem, není to naformátované.
Kód:
<script type="text/javascript">
// inicializace tinymce
</script>
<script type="text/javascript">
function nactiText(var text) {
var editor = window.parent.tinyMCE.activeEditor;
editor.setContent('text');
}
</script>
// načtení dat z databáze (PHP)
...
$text = $zaznam['obsah'];
...
// Po načtení stránky by se měl obsah načíst do tinymce
<body onload = "nactiText('<?php echo $text; ?>');">
Jak sem psal. Bez uvozovek to načte. Funkce addslashes() nepomáhá :-(, nebo aspoň se mi to nepovedlo. Má někdo nějaké zkušenosti? Díky.
Zdravím,
chci se zeptat, proč zadávající chce vracet int z funkce, když si představím klasický void?
Třeba funkce, která provádí jednouchý výpis:
struct BOD
{
int X;
}
int vypis(BOD *b)
{
cout << b->X;
return 0;
};
Navíc tohle na mě stejně řve: 'return' : cannot convert from 'int' to 'BOD'.
Věřím v tomu, že v dřívějších dobách (a je tomu i teď) se toto dělá právě pro otestování úspěšnosti nebo jak to mám říct. Nebo to má jiné důvody? Pokud ano, tak budu rád za příklad.
Díky za pomoc.
KIIV:
Díky. Poslední věc... Ještě by mě zajímalo v jakých případech použít pointers a kdy ne? Já je používám skoro všude (C/C++), ale v C# je to dosti omezující, tam to musím házet do sekce [unsafe].
Btw: Někdy fakt magořím, co kam použít... [*], [&], [->], [.]. Ještě, že existuje IntelliSense. Bez toho ani krok... Co používáš pro vývoj C/C++? Pro školní projekty tu mám Dev-C++ (Grr). Jinak pro profi vývoj Code::Blocks a Microsoft Visual C++.
Ještě jedno btw. Jak se jmenuje ten třetí a čtvrtej operátor? Mám za to, že ten třetí je operátor přístupu k prvku struktury nebo unionu s dereferencí. No a čtvrtej analogicky operátor přístupu k členu struktury nebo unionu. To víš, chci mít ve všem jasno.
Měj se.
RePRO
crazy:
V parametru funkce máme ukazatel na int (*). Ve volání funkce pak očekáváme adresu proměnné (&).
Ukazuji ještě druhou možnost, kdy můžeme vrátit ukazatel na nově alokovanou paměť, kde máme výsledek.
:-)
int scitani1(const int *ax, const int *bx) {
return *ax + *bx;
};
int* scitani2(const int *ax, const int *bx) {
return new int(*ax + *bx);
};
int main(int argc, char *argv[])
{
int a = 5;
int b = 2;
cout << scitani1(&a, &b);
int *c = scitani2(&a, &b);
cout << *c << endl;
delete c;
system("PAUSE");
return 0;
}
Pro takto jednoduché věci jsou pointers zbytečné, ale... jenom pro demonstraci. :-)
Díky. Ještě přidávám ukázku bez funkcí:
U funkcí (a metod) mi přijde nejběžnější a nejlogičtější předávat referenci, pokud je přímo v definici funkce dereference.
int a = 5;
int *ukazatel = &a;
// Vypíše adresu, kam ukazuje (tedy adresu obsahu)
cout << ukazatel << endl;
// Vypíše obsah, kam ukazuje ukazatel
cout << *ukazatel << endl;
// Vypíše adresu samotného ukazatele
cout << &ukazatel << endl;
Tak nějak s Tebou úplně nesouhlasím. Napsal si 2 typy, co dosazuješ za parametry. Vždy ale záleží na tom, co máš za výchozí proměnné:
1)
výchozí proměnná: *ukazatel
void funkce(&reference) { ... };
potom: funkce(*ukazatel);
2)
výchozí proměnná: normální
void funkce(*dereference) { ... };
potom: funkce(&normální);
3)
výchozí proměnná: normální
void funkce(&reference) { ... };
potom: funkce(normální);
4)
výchozí proměnná: *ukazatel
void funkce(*dereference) { ... };
potom: funkce(ukazatel);
Navíc si myslím, že "*" a "&" pracuje naprosto stejně - uvnitř je pointerová logika. Myslím, že největší rozdíl tkví v tom, že
- "&" (reference) nepřiřadíme NULL a těžko se mění,
- "*" (dereference) se přiřadí NULL a změní se kdykoliv (krom const).
Ty funkce budou fungovat analogicky. Jde pouze o syntakční stránku.
Zdravím,
mohl by mi někdo vysvětlit rozdíl mezi těmito třemi funkcemi?
(http://pastebin.com/5M6jB7fL)
Programuji už léta, vždy jsem využil dereferenci. Ovšem, tady jsou tři funkce a v parametrech je jak reference (&) a dereference (*). Návratové hodnoty jsem taky změnil.
Všechno mi šlo přeložit (IDE: Microsoft Visual C++).
Vždycky jsem měl problémy, co se může dávat za parametry, takže to shrnu:
Pokud máme proměnnou dereferenci: *ukazatel
- funkce(*prom) – dáváme: funkce(ukazatel)
- funkce(&prom) – dáváme: funkce(*ukazatel)
Pokud máme proměnnou klasiku: klasika
- funkce(&prom) – dáváme: funkce(klasika)
- funkce(*prom) – dáváme: funkce(&klasika)
Nebo jsou i jiné možnosti?
Moje otázky
1) Jaký je tedy rozdíl mezi referencí a dereferencí? Přijde mi to dosti analogické. Můžu si stále používat dereferenci?
Jakožto reference je adresa proměnné, dereference je též adresa proměnné, akorát na ní směřuje ukazatel.
2) Jaký je rozdíl mezi druhou a třetí funkcí?
Doufám, že si už v tom udělám absolutní jasno, i když ho mám, ale ne zcela úplné. Dobrý programátor toto prostě musí umět dokonale – aneb práce s pamětí.
Tímto bych chtěl i pozdravit kolegu a kámoše Matrixe, pokud si toto vlákno čte a hodí mi sem třeba i dobrou radu nad zlato. ;-)
Díky a mějte se – pěkný den.
Zdravím,
mám dvě databáze (nazvěme je první a druhá).
Dejme tomu, že první databáze má tabulku usersBB, druhá databáze má tabulku jenom users.
Tabulka usersBB v první databázi vypadá následovně:
usersBB = [bbID, bbNickname, bbPassword, ... ]
Tabulka users v druhé databázi vypadá následovně:
users = [ID_user, nick, gender, pass, gravatar, mail, law, group, colorOfNick, last_activity, isOnline]
No já potřebuji zajistit následující:
Pokaždé, když se přidá, upraví, smaže řádek z první tabulky (první databáze), tak aby se to projevilo i u druhé tabulky (druhé databáze).
Takže, pokud se v první tabulce udělá třeba INSERT (nový uživatel), tak mi stačí naklonovat (zkopírovat) bbID, bbNickname, bbPasword, možná i některé další sloupce z tabulky usersBB do tabulky users.
To znamená prakticky (pseudojazykem) toto:
databáze2.users.ID_user = databáze1.usersBB.bbID
databáze2.users.nick = databáze1.usersBB.bbNickname
databáze2.users.pass = databáze1.usersBB.bbPassword
Vůbec nevím co s tím, používám PHP a MySQL.
Byl jsem odkázán na Trigger, potřeboval bych ukázku přímo k tomuto problému. Dynamicky to (nějak) zajistit.
Snad mi rozumíte. Nějaké rady, nápady?
Díky, RePRO.
Ten poslední odstavec neřeš. Myslel jsem, jestli se náhodou nedá v prostředí IDE C sharp 2010 express pracovat s DB na přímo (bez managmentu). Pořád v tom nevidím přímou spojitost.
Ta chyba je strašně dlouhá a nejde zkopírovat (možná bude chyba mezi židlí a klávesnicí).
Ohledně databáze (když jsem v IDE třeba C sharp 2010 express edition):
V sekci Data mi to pořád vybízí na Data source. Ve škole děláme DB s managmentem. Je nějaká spojitost přímo v IDE třeba C sharp express 2010? Potřebuju to přes DataReader (jak jsem psal). Přes DataSet ne (též jsem ale používal).
#2 liborb
Na mezery to vliv mít nebude - s mezerama to valí slušně v nějakých ostatních mých connection programech.
#3 djanosik
Má to být ex.ToString(); místo toho, co sem tam měl ex.Data.ToString();. Takže vím, kde je chyba. Nespojí se to! Ale proč? To nechápu! :-) Bude za tím (nejspíš) connection string, nebo ten soubor (kde přesně má být v mém projektu umístěn?)
Vím, mám to celé v jedné třídě, ale je to do školy. ;-) Učitel prostě chce načíst data pomocí DataReaderu a vypsat je (tak jak to mám). Kdybych to měl dělat jako velko-projekt, určitě bych to rozdělil na další podproblémy. Takhle je to dost odvážné.
Zdravím,
chci se jednoduše připojit k databázi (Northwind). Už několikrát jsem to zkoušel a povedlo se mi to (jak v GUI, tak v Console). Ale teď? Ani omylem... Je to nějaká prkotina, nebo už fakt nevím.
Používám klasicky: SqlClient -> DataReader. V obouch výjimkách mi to vyhodí do MessageBoxíku:
System.Collections.ListDictionaryInternal. To je nějaká chyba s kolekcemi, nebo co? Co to má společného s připojením, když volám metodu connect()? Asi jsem nepozorný nebo to bude hodně jalový kiks.
Díky moc. Jo, a abych nezapomněl, tak příkládám můj zdroják:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace Databaze
{
public partial class MyDatabase : Form
{
private SqlConnection conn;
private string connectionString = @"server = .\sqlexpress; integrated security = true; database = Northwind";
private SqlDataReader reader = null;
public MyDatabase()
{
InitializeComponent();
}
public void connect()
{
conn = new SqlConnection(connectionString);
try
{
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show("Chyba připojení: " + ex.Data.ToString());
}
finally
{
lblStavShow.Text = conn.State.ToString();
}
}
public void showData()
{
SqlCommand cmd = new SqlCommand(@"SELECT * FROM Employees", conn);
try
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
listboxData.Items.Add(reader[0].ToString() + "" + reader[1] + "" + reader[2] + "" + reader[3] + "" + reader[4]);
}
}
catch (Exception ex)
{
MessageBox.Show("Chyba: " + ex.Data);
}
finally
{
reader.Close();
conn.Close();
}
}
private void btnDataReader_Click(object sender, EventArgs e)
{
showData();
}
private void btnConnect_Click(object sender, EventArgs e)
{
connect();
}
}
}
Zdravím,
mám 4 tabulky (user = uživatel, article = článek, comment = koment, confidence = důvěra).
- user (ID, nick);
- article (autor, reg);
- comment (autor, reg);
- confidence (idUser, hodnota);
A vše je spojené s hlavní tabulkou user, to znamená:
user.nick = article.autor;
user.nick = comment.autor;
user.ID = confidence.idUser;
A já potřebuju ZOBRAZOVAT toto:
<th>[#]</th> <th>[přezdívka]</th> <th>[důvěra]</th> <th>[napsal zpovědí]</th> <th>[napsal reakcí]</th>
Důvěra se pro každého uživatele vypočítá takto: duvera = soucetDuvery/pocetDuvery;
Potřebuji dotaz... Zkoušel jsem tento dotaz, ale někde jsou chyby:
// a... user tabulka
// b... článek tabulka
// c... koment tabulka
// d... důvěra tabulka
$sqldotaz = mysql_query("SELECT a.nick,
(SELECT COUNT(*) AS pocetClanku FROM article),
(SELECT COUNT(*) AS pocetKomentu FROM comment),
(SELECT COUNT(*) AS pocetDuvery, SUM(hodnota) AS soucetDuvery FROM confidence)
FROM user a
LEFT JOIN article b ON a.nick = b.autor
LEFT JOIN comment c ON a.nick = c.autor
LEFT JOIN confidence d ON a.ID = d.idUser
WHERE b.reg = '1'
AND c.reg = '1'
");
Zdravím,
mám tuto tabulku:
turnajvysledek
[ ID ] .... [ ID hráče ] .... [ Umístění ]
1 2 1
2 3 1
3 2 1
4 1 5
A já potřebuji dotaz: hráče s největším počtem vítězství (umístění = 1) ze všech hráčů, kteří jsou v tabulce. Takže pak budu potřebovat, aby mi to zobrazilo toto:
[ ID hráč ] .... [ Počet prvních míst ]
1 0
2 2
3 1
A budu z toho chtít ještě vzít jednoho hráče... Takže to bych ošetřil tím LIMIT 1. Můžete poradit? Nastíním sem dotaz, co jsem spáchal... ale prostě něco je špatně.
SELECT DISTINCT b.hrac_idhrac,
(SELECT COUNT(a.umisteni) AS pocet
FROM turnajvysledek a
WHERE a.hrac_idhrac = b.hrac_idhrac
AND a.umisteni = '1')
FROM turnajvysledek b ORDER by pocet DESC LIMIT 1
Zdravím,
nejsem až takový znalec v tomto oboru, ale zkusím něco nadhodit do éteru. ;-)
Bude se zobrazovat čas, datum a rok - fajn. Ale na čem? Na LCD displeji, LCD displeji řízeným mikroprocesorem, nebo na dynamickém displeji? Samozřejmě si myslím, že pro zobrazení nepostačí pouze 4 piny portu P3. Eh... A nemáte to náhodou na tom portu ovládat tlačítkama? Máš v tom asi pěkný guláš. Třebas:
- P3.0: tlačítko (button) inkrementuje čas/hodiny
- P3.1: tlačítko (button) dekrementuje čas/hodiny
- P3.2: tlačítko (button) enter pro potvrzení nastavení
- P3.3: tlačítko (button) pro nastavení
A jen tak mimochodem, kde se vezme čas? Navrhoval bych dvě (nevím, jestli možné) následující řešení:
- Nastavení čítače/časovače pro počítání sekund a zvýšení některých proměnných (budou se nacházet v paměťovém prostoru 20H). Problém tohoto řešení je takový, že to není moc přesné. Proč asi? ;-) Protože málokdy se dopočítáš té správné předvolby. Někdy je to zcela nemožné vygenerovat jednu sekundu přesně touto metodou. Samozřejmě musíš dbát na správnou frekvenci (Hz) oscilátoru.
- RTC (Real Time Clock) obvod/čip, což jsou klasické hodiny. Je to přesné. Myslím od Maxim Dallas.
Zadání si napsal dosti (působí to tak na mě) rozpačitě - sám vůbec nevíš, co od toho očekávat... Pokud tyto poznatky dáš do kupy, určitě Ti rádi poradíme. ;-) Navíc problém vidím i v tom, že nebudeš schopen toto celé dát ve strojovém kódu do kupy, RePRO.
soubor: index.html
<!DOCTYPE html>
<html lang = "cs-cz" dir = "ltr">
<head>
<meta charset = "UTF-8">
<title>Závislý select</title>
<script type = "text/javascript" src = "http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function() {
$("#select1").change(function() {
var r = getSelected('#select1');
$('#select2').removeAttr('disabled');
$.get('test.php', {param: r}, function(data) {
$('#select2').html(data);
});
});
});
function getSelected(selectId) {
$select = $(selectId);
var str = "";
$('option:selected', $select).each(function () {
str += $(this).text() + " ";
});
return str;
}
</script>
</head>
<body>
<select name = "select1" id = "select1">
<option selected = "selected"> -- </option>
<option name = "cesko" value = "cesko"> Česká republika </option>
<option name = "spanelsko" value = "spanelsko"> Španělsko </option>
</select>
<select name = "select2" id = "select2" disabled = "disabled">
</select>
</body>
</html>
===
soubor: test.php
<?php
switch (trim($_GET['param'])) {
case 'Španělsko': echo "<option name = \"madrid\" value = \"madrid\" selected = \"selected\">Madrid</option>
<option name = \"sevilla\" value = \"sevilla\">Sevilla</option>";
break;
case 'Česká republika': echo "<option name = \"praha\" value = \"praha\" selected = \"selected\">Praha</option>
<option name = \"olomouc\" value = \"olomouc\">Olomouc</option>";
break;
}
?>
Ale potřebuji to nějak upravit... resp. pracovat s tou proměnnou R. Nevím, jak jí zakomponovat do toho postu:
<script>
$(document).ready(function() {
$("#select1").change(function() {
var r = getSelected('#select1');
$('#select2').removeAttr('disabled');
$('#test').text(r);
$.post('nactiDataDB.php', null, function(data) {
$('#select2').html(data);
});
});
});
function getSelected(selectId) {
$select = $(selectId);
var str = "";
$('#select1 option:selected').each(function () {
str += $(this).text() + " ";
});
return str;
}
</script>
Zdravím,
dejme tomu, že máme dva selekty (stát a město). No a mě by zajímalo, jak by se dalo udělat následující (elegantně - nejlépe snad jQuery):
1. Select stát bude aktivní (Select město nebude aktivní - nelze otevřít).
2. Vybere se Česká republika (v prvním selektu) a druhý selekt se aktivuje (to znamená: pokud je aktivovaný první selekt, může být aktivovaný i druhý selekt (snad chápete) - je to logické).
3. Příklad:
- Dejme tomu, že vybereme Česká republika (v první selektu), poté budeme mít výčet (ve druhém selektu) následující:
- Praha
- Liberec
- Brno
- ...
---
- Dejme tomu, že vybereme Španělsko (v prvním selektu), poté budeme mít výčet (ve druhém selektu) následující:
- Madrid
- Valencia
- Barcelona
- ...
Nejraději budu, pokud sem někdo hodí odkaz na Sample, nebo vlastní Sample. Vyvarujte se prosím obecným kecům - moc to nemám v oblibě. :) Já raději kódy - to jest praxe.
S pozdravem,
RePRO.
Jenom taková technická (neberte mě za blázna), dokázali byste to napsat čistěji? (je to v céčku)
Plno lidí (...neprogramátorů...) se snaží psát podobné typy aplikací bez ukazatelů a adres (a je to zcela nesmyslné - věříte mi?). Takže se zeptám jinak, je tu něco, co se Vám nelíbí?
#include <stdlib.h>
#include <stdio.h>
#define MATRIX_SIZE 3
typedef double TMatrix[MATRIX_SIZE][MATRIX_SIZE];
void readMatrix(TMatrix* matrix);
void add(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2);
void sub(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2);
void printMatrix(const TMatrix* matrix);
int main(int argc, char** argv) {
TMatrix A, B, C;
printf("Matice A:\n");
readMatrix(&A);
printf("Matice B:\n");
readMatrix(&B);
add(&C, &A, &B);
printMatrix(&C);
system("PAUSE");
return (EXIT_SUCCESS);
}
void readMatrix(TMatrix* matrix) {
for(int i = 0; i < MATRIX_SIZE; i++) {
for(int j = 0; j < MATRIX_SIZE; j++) {
printf("Pozice %d %d: ", i, j);
scanf("%lf", matrix[i][j]);
}
}
}
void add(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2) {
for(int i = 0; i < MATRIX_SIZE; i++) {
for(int j = 0; j < MATRIX_SIZE; j++) {
*matrix[i][j] = *matrix1[i][j] + *matrix2[i][j];
}
}
}
void sub(TMatrix* matrix, const TMatrix* matrix1, const TMatrix* matrix2) {
for(int i = 0; i < MATRIX_SIZE; i++) {
for(int j = 0; j < MATRIX_SIZE; j++) {
*matrix[i][j] = *matrix1[i][j] - *matrix2[i][j];
}
}
}
void printMatrix(const TMatrix* matrix) {
for(int i = 0; i < MATRIX_SIZE; i++) {
for(int j = 0; j < MATRIX_SIZE; j++) {
printf("Pozice %d %d = %f\n", i, j, *matrix[i][j]);
}
}
}
Zdravím,
v AVR jsme dělali teď v semestru (dokonce ho mám nainstalované - a to AVR Studio 4). A programovat mikrokontroléry v C++ je zbytečné a dělá se to většinou v holém C, jak píše kolega KIIV. Je tam nástroj (program) AVR GCC, co Ti umožní psát programy přímo v C.
Programovali jsme ATMEL ATmega644. Pokud budeš chtít zaslat programy, které jsme dělali na cvičení, klidně je mohu zaslat.
Zdravím,
a nechceš zkusit Aplikovanou informatiku v Jihlavě? Škola stojí za prd, ale programuje se tu celkem dost.
1. semestr:
- C
2. semestr:
- C++
3. semestr:
- C++ více dopodrobna (více algoritmizace)
4. semestr:
- Mikroprocesorová technika (programy pro ATMega644 v C)
- Počítačová grafika (grafika v OpenGL - GLUT)
- Programování Win32 aplikací (Win API - C++ Builder)
- Tvorba WWW (PHP)
No a teď mě v 5. semestru čeká:
- Java
- .NET (C#)
- Programování ASP aplikací
- Mikroprocesory RISC (programy pro PIC18F452 v assembleru)
Tady je odkaz na studijní plán: https://is.vspj.cz/studijni-plany/index/plan/14 [musíš sjed dolů].
Jinak máš tady předměty i Počítačové sítě 1 i 2 (které jsem absolvoval a pohodička).
Docela na pytlačku jsou ty elektro zaměřené předměty, s těma mají studenti většinou potíže [elektrotechnika 1, elektrotechnika 2, číslicové systémy]. Tak jsem udělal trošku mini propagaci našemu oboru a mohu zase odejít. :-)
Zdravím,
napište sem jednoduše rozdíl mezi těmito klíčovými slovy. Jelikož v jiných programovacích jazycích je buď pouze abstract, nebo virtual. V C# (sí-šárpu) jsou obě tyto klíčová slova (...)
Já to celé chápu takto: Abstraktní metody jsou vždy virtuální. Nemají zajištěnou implementaci.
To je hlavní rozdíl, no a to potom dále znamená (nejspíš - z hlediska mého programovatelského):
- Abstraktní metoda:
- Pokud třída obsahuje abstraktní metodu, musí být tato třída deklarována jako abstraktní.
- Abstraktní metoda nemá implementaci (jsou zobrazeny pouze definice metod).
- Tedy třídy, které vyplývají (dědí) z této abstraktní třídy, tak metody uvnitř této třídy musí být implementovány.
a také:
- Virtuální metoda:
- Pokud třída obsahuje virtuální metodu, není tato třída deklarována jako virtuální.
- Virtuální metoda má implementaci.
- Tedy třídy, které vyplývají (dědí) z této virtuální třídy, tak metody uvnitř této třídy můžou být přepsány (override), ale nemusí (již jsou implementované).
Díky za postřehy, RePRO.
Díky moc. Akorát bych ještě chtěl přidat svůj seznam slov. V PHP mám napsanou svou funkci getUsers, která vrací pole. Tak jak to do toho zakomponovat... Ty si hodně zkušenej člověk přes jQuery. Kdybys byl reglej, už máš u mě reputaci.
Zdravím,
pokud znáš chaty (xchat.cz, lide.cz, libimseti.cz), tak určitě znáš tu kravinku, že pokud napíšeš třeba RE, a poté stiskneš klávesu TAB, tak se Ti doplní celá přezdívka -- třeba RePRO.
- Neví někdo jak na tento zapeklitý skript? :-)
Díky, RePRO.
Vlastní tvorba? Tak to obdivuji. Dost se mi to líbí (včetně grafiky - jak to děláš? :D) a muselo to dát plno práce. Na druhou stranu pokud člověk umí skvěle použít jQuery (jedinečná knihovna) - je všechno tak jednoduché... Pár řádků kódů a ta funkčnost (dynamičnost) včetně zabezpečení.
Chápu to -- jak to myslíš, že při každém refreshi budu vytahovat jenom příspěvky, které mají třeba isSee = 0. Ale co s těma ostatníma? Já chci vidět i ty ostatní, kde máš isSee = 1. Ale nechci je tahat z DB... v tom je problém.
BTW: Jak si mi napsal, zkusil jsem tedy LIMIT, a pomáhá to samozřejmě... ale ještě bych to rád optimalizoval tou metodou výše. Když to nepůjde - nepůjde.
Jenže teď jsem si vzpomněl, texty jsou texty - tam dáš třeba LIMIT 10 a jsi v cajku, ale co výpis online users? Tam je nemůžeš zkrouhnout limitem - vždy musíš vypsat všechny online usery. Tam pak je na místě ta metoda.
Díky.