Skrytí a zobrazení okna není žádný problém. Když se ti ta okna hromadí, tak to máš nejspíš celé blbě. Ukaž kód.
Příspěvky odeslané z IP adresy 213.211.51.–
Teoreticky můžeš importovat ty soubory tak, jak je máš, ale v přesunu do funkcí není problém.
# snake.py
neco
neco
# pong.py
cosi
cosi
# combined.py
def snake():
neco
neco
def pong():
cosi
cosi
Importy ve funkcích nevadí, ale mohl bys je vyhodit na začátek souboru.
#6 shockwave
Protože if-else testuje hodnotu té proměnné (respektive libovolného výrazu) a podle toho provede blok if nebo else.
Nejdřív mástarted hodnotu False, tak se auto nastaruje a started se nastaví na True.
Když se pokusíš nastartovat znova a started je teda True, tak to zařve, že už je nastartováno.
Z předchozího kódu musí být jasné, jak if funguje. Koukni se na to od začátku.
S čím konkrétně si nevíš rady?
Na video se dívat nebudu, ale program je prostě sada příkazů, které se postupně vykonávají. Když do proměnné přiřadíš False, tak tam bude False, dokud jí nepřiřadíš jinou hodnotu.
#10 gna
int compute(char src[], char result[], int n)
{
int soucet = 0, cislo, pocet;
char *data = src;
while (sscanf(data, " %d%n", &cislo, &pocet) == 1)
{
soucet += cislo;
data += pocet;
}
int celkemZnaku = snprintf(result, n, "%d", soucet);
if (celkemZnaku < n)
return 0;
else
return 1;
}
int main(void)
{
char src[] = "10 20 30";
char result[10];
printf("soucet %s\n", src);
if (compute(src, result, (int)sizeof result) == 0)
printf("= %s\n", result);
else
printf("%d znaku nestaci\n", (int)sizeof result);
return 0;
}
Úplně stejně, jako v mainu.
CMake umí vygenerovat projekt pro VS a VS umí načíst projekt CMake. Tam by neměl být problém.
Hláška, že proměnná zřejmě určující překladač nebyla použita, docela dává smysl a nejspíš to neznamená chybu.
Když se do těch souborů trochu podíváš, tak celý projekt je těchhle pár zdrojáků se závislostí na opencl, takže je úplně jedno jak si VS poradí s CMake a můžeš vytvořit ten projekt sám.
When you look at the above example you may think it is a too small amount of code and you are basically right. All OpenCL elements like context, queue, kernel compilation are away and if you go to examples site at https://github.com/sowson/gpucomp you will find all needed elements that are missing.
r'\d+|\*\*|[-+*/]'
číslic
Asi bych použil regex. Skupina čísel, nebo operátor.
>>> s = '/-*+*++**85 27 39 87 65 65 37 63 91'
>>> re.findall(r'\d+|[-+*/]', s)
['/', '-', '*', '+', '*', '+', '+', '*', '*', '85', '27', '39', '87', '65', '65', '37', '63', '91']
Nedávej závorky kolem výrazu, ale kolem jeho operandů a jen pokud je to potřeba.
NetworkOnMainThreadException, Keeping your app responsive
Takže síťové operace, by se měly dělat na pozadí.
Promena_TextViewTextView = Promena_TextViewTextView.findViewById(R.id.mojeid);
A tohle je krávovina, ale na to asi přijdeš.
Jenže kdybych dal kód z class main do classy onCreate, program by hlásil chyby
Class je MainActivity. main a onCreate jsou metody :)
nemohu za protected void onCreate(Bundle savedInstanceState) dát throws IOException
Když děláš něco, co může hodit vyjímku, tak musíš tu dotčenou metodu příslušně označit s throws, nebo tu vyjímku v ní můžeš odchytit.
A když overriduješ metodu, která původně vyjímky nevyhazuje, tak nemůžeš říct, že teď najednou vyhazuje, ale pořád je můžeš sám odchytit.
Jak bych to mohl napsat aby se mi funkce main zpustila?
Vstupní bod aktivit je onCreate. Ten main teoreticky můžeš normálně zavolat, ale nevidím v tom smysl. Na statický main zapomeň.
Nezkoušeno, ale takhle nějak by to snad mohlo fungovat:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String title;
try {
Document doc = Jsoup.connect("https://www.wikihow.com/Main-Page").get();
title = doc.title();
} catch (IOException e) {
title = e.getMessage();
}
Promena_TextViewTextView = Promena_TextViewTextView.findViewById(R.id.mojeid);
Promena_TextViewTextView.setText(title);
}
getElementByClassName najde element, který má požadovanou hodnotu v atributu class. Šlo by to tak nějak udělat, ale nedává to smysl.
Když takhle máš ten span vždycky hned za inputem, tak by šlo úplně jednoduše to prostě šoupnout do následujícího elementu:
$currentTabInput.next().html(inpObj.validationMessage);
Samozřejmě by to chtělo tak nějak ať nezáleží na tom kde a jestli vůbec tam ten element je, ale upřímně já v tomhle nejsem úplně kovanej.
1. Víš, že out_of_guesses má výchozí hodnotu False a not je negace. Takže na začátku cyklu (a dokud se hodnota out_of_guesses nezmění) je výsledek té negace True.
2. Nehledej v tom žádnou magii, program se provádí zleva doprava a shora dolů, tak jak je napsaný. Příkaz while provádí následující blok kódu dokud platí uvedená podmínka. V tom bloku máš příkaz if, který provádí následující blok kódu pokud je splněna jeho podmínka (nebo blok else, pokud splněná není). Otázka, co se provádí dřív je úplně úchylná :))
Ale ne, $currentTabInput už je ten jeden input, který budeš validovat.
// vsechny inputy na aktivnim tabu
let $currentTabInputs = $($tabs[currentTab].getElementsByTagName("input"));
// a postupne kazdy z nich zvalidovat
$currentTabInputs.each(function (e) {
// tohle je ten input k validaci
let $currentTabInput = $($currentTabInputs[e])
...
}
Ten getElementById tam nedává žádný smysl. A $currentTabInput je ten input jako jQuery objekt, ze kterého můžeš dostat ten "nativní" objekt. Tak jak to máš teď, by tohle mělo fungovat.
let $currentTabInput = $($currentTabInputs[e])
let inpObj = $currentTabInput[0];
No, nejdelší má být na 25 znaků. Tak ho najdeš a zjistíš koeficient, který ti pro něj dá 25. Třeba
k = maxdelka / 25
A tím pak všechny přeškálueš
scaled = orig / k;
Jestli to správně chápu. A bacha na dělení nulou.
%4.1f
Tj. celkem (minimálně) 4 znaky, 1 desetinné místo.
Ta funkce zvaliduje aktuální tab a podle toho dovolí nebo nedovolí přechod na další.
Ty teď natvrdo vždycky validuješ ten element "width", který předpokládám, že máš až někde na dalších tabech a zatím nevyplněný, takže s nedovolenou hodnou a nepustí tě to dál.
Validuj jen currentTabInput.
Chybí ti tam L - LC_ALL.
"LC_ALL=cs_CZ.UTF-8 rrdtool ..."
To, co se tu furt řešilo byl to, že není co řešit. Když umíš rrdtoolem vygenerovat graf, tak prostě z PHP funkcí passthru spustíš rrdtool.
Teď jsi přišel s externí knihovnou, kterou samozřejmě musíš nejdřív nainstalovat. A i když vypadá pěkně, tak jsi zase na začátku, že nechápeš ani řádek a chceš, aby ti to někdo rozchodil. Tak si přečti dokumentaci.
Fajn, tak teď máš funkci, která umí jen výpis do souboru? No tak pak načti obsah toho souboru. Jak tě napadlo, že by se to tak nějak prostě vyskytlo v nějakém $data, fakt netuším.
Přes dva týdny tady máš funkční řešení a pořád musíš vymýšlet něco jiného.
Ty banální základy stačí. Všechno, co potřebuješ, už tam v podstatě máš.
nacti(co_zmenit)
switch (co_zmenit) {
case SPORT: nacti(zaznam.sport); break;
case TYM: nacti(zaznam.tym); break;
...
}
nacti(kde_hledat);
nacti(co_hledat);
switch (kde_hledat) {
case SPORT: vyhovuje(zaznam.sport, co_hledat); break;
...
}
int *pole = NULL;
int kapacita = 0, nacteno = 0;
while (!konec) {
int cislo = nacti();
if (nacteno == kapacita) {
int novakapacita = kapacita + 1000;
int *novepole = realloc(pole, novakapacita * sizeof(int));
if (novepole == NULL)
chyba("nedostatek pameti");
kapacita = novakapacita;
pole = novepole;
}
pole[nacteno++] = cislo;
}
Kromě zapsání záznamu do souboru si tam udělej ještě načtení záznamu ze souboru a asi se ti to začne rýsovat.
Pokud na ty změny chceš jít tímhle stylem kopírování, tak místo dotyčného záznamu zapíšeš nový, nebo v případě mazání ho přeskočiš. A ty režimy pro fopen budou "r" pro čtení, "w" pro zápis a "a" pro přidávání.
Asi bude jednodušší načíst celý soubor do paměti, tam dělat změny a pak ho zase celý zapsat.
if (val < min) ?
Ten if kde se testuje, jestli je hodnota prázdná, asi vidíš, ne? Tak tam ošéfuj ty svoje atributy.
Flashka se adresuje po wordech, takže to je správná adresa. Hmm, ale proč ti to teda nefuguje? :)
A kde teda jsou a co je na těhle adresách?
Máš jako pocit, že v PHP je nějaká magická implementace rrdtoolu? To jen spustí ten příkaz tak, jako bys ho psal v shellu. Tak ho dej dohromady a napiš si ho tam. Ten bashovský skript ti funguje a najednou nevíš, co tam narvat?
Ten konstuktor teda samozřejmě musíš přepsat tak, aby přijímal parametr a uložil si ho.
Ale taky to nejde dělat tak, že vezmeš zdroják z package a výskyty "package" přepíšeš na "import" :). Teda může to jít a nemusí. Musíš vědět, co děláš.
V tomhle případě máš teda nový projekt, do kterého jsi vykopíroval ten HelloWorld. Takže ten řádek s package jen smaž. Někde máš nainstalovaný jpdfwriter-něco-něco.jar. Tady se v bodě 11 píše, jak s v JavaEditoru přidává jar -- http://javaeditor.org/doku.php?id=en:faq. Tak to udělej a snad by to mělo jít zkompilovat.
Z toho kódu, který už máš, je snad jasné, že by přinejmenším mělo jít něco jako toto
s[i].name = o.name
...
A dá se tak přiřadit celá ta struktura (což nemusí být to, co chceš)
s[i] = o;
Teď potřebuješ nějak dostat to i. Buď ten seznam projdeš a najdeš volnou pozici, nebo to bude parametr funkce.
Máš to nějaký překombinovaný, chlape :)
Jinak teda můžeš tomu Hráčí to Pole předat. Třeba hned konstruktorem.
this.poleVrstva = new Pole();
this.hracVrstva = new Hrac(this.poleVrstva);
A proč v tom "skriptu" máš tenhle package?
Stáhni .jar soubor. Ten připojíš ke svému projektu a ve svém kódu pak nebudeš psát package ...pdfbox, ale import ...pdfbox.
Vůbec nevím. Budu jen tipovat.
== Control.ID
Dim Control As Control = LoadControl("/" & i.Type & ".ascx")
Dim nControl As IObjectsInterface = CType(Control, IObjectsInterface)
nControl.ID = i.ID
Mělo by se ID nastavit tím Loadem? Je v té šabloně definované?
Nebo tím přířazením? Je v i.ID něco? Určitě se takové přiřazení promítne "nahoru"?
== Dynamic.ID
To je nový objekt, pravděpodobně je ID defaultně prázdné. Tipl bych, že to měl být ten objekt nalezený Findem.
Dim Dynamic As Control = form1.FindControl("Center")
#47 Borisek
Ten operátor tečka jen pospojuje ty řetězce. Takže máš ty parametry nalepené jeden za druhým a naopak za těmi rovnítky máš zase nadbytečné mezery.
Takhle by to mohlo fungovat:
$command = 'rrdtool graph - ' . join(' ', $args)
. ' DEF:venku=/media/FlashDisk/databaze_teplota.rrd:AVERAGE'
. ' DEF:voda=/media/FlashDisk/databaze_teplota.rrd:voda:AVERAGE'
. ' DEF:kotel=/media/FlashDisk/databaze_teplota.rrd:kotel:AVERAGE';
header("Content-Type: image/png");
passthru($command);
<%%|%%>
Já nerozumím tomu, proč pořád uvažuješ o tom, že bys jako adresu obrázku grafu měl databázi rrd.
Představ si, že máš na serveru obrázek graf.png. Když pak "půjdeš" na http://server/graf.png, tak ti server vrátí jeho obsah a uvidíš ten obrázek.
To dělá i ten rrdgraphpng, načte a zobrazí obrázek na zadané adrese (resp. šabloně adresy). Když budeš mít
data-src-template="graf.png?start={{start}}&end={{end}}&"
a pak v těch ovládacích prvcích vybereš zobrazení posledních 6 měsíců, tak "půjde" na adresu
server/cesta/graf.png?start=číslo-znamenající-teď-minus-6měsíců&end=číslo-znamenající-teď
Pak ten graf o polovinu posuneš do prava (tedy o 3 měsíce zpět) a ono to "půjde" na adresu
server/cesta/graf.png?start=číslo-znamenající-teď-minus-9měsíců&end=číslo-znamenající-teď-minus-3měsíce
To se samozřejmě nijak neprojeví a pořád uvidíš to samé, protože graf.png je statický obrázek, pro který ty parametry nic neznamenají. Ale je to hotový obrázek, ten rrdgraphpng ho nezpracovává, negeneruje, prostě dostane od serveru obrázek a ukáže ti ho.
"Trik" je pak v tom, že jako adresu obrázku nezadáš statický obrázek, ale skript, který ta obrazová data bude generovat dynamicky podle požadovaných parametrů start/end/atd. A to bude dělat spouštěním rrdtoolu tak jak se ti zlíbí. Hotovo, konec, můžeš si šoupat s grafama :-)
Na tom, kde máš databázi nezáleží. Když ji nechceš mít přístupnou z webu, tak neměj. K ničemu tam není potřeba.
Plugin pro VSCode je špičkový. Pro Sublime ucházející. PyCharm asi bude nejlepší, ale mně se tak nějak hnusí, nevím proč.
Já teda úplně nechápu, co v tom cyklu děláš, ale děláš to pokaždé. Připrav si data a pak jen hledej.
Já jsem tady udělal dva stringy v obou směrech a prosvištím je findem.
def findall(haystack, needle):
pos = -1
while True:
pos = haystack.find(needle, pos + 1)
if pos == -1:
break
yield pos
fname_data, fname_words = input().split()
with open(fname_words) as file:
words = file.read().lower().split()
with open(fname_data) as file:
data_rows = file.read().lower().split()
data_cols = zip(*data_rows)
data_rows = '\n'.join(data_rows)
data_cols = '\n'. join((''.join(col) for col in data_cols))
data_width = data_rows.find('\n') + 1
data_height = data_cols.find('\n') + 1
for word in words:
for pos in findall(data_rows, word):
x, y = divmod(pos, data_width)
print(word, x, y, 0)
for pos in findall(data_cols, word):
y, x = divmod(pos, data_height)
print(word, x, y, 1)
Ten poslední cyklus otoč
for word...
for direction...
Teda pokud jde o jeden řádek.
memmove umí pracovat s buffery, které se překrývají. Tím můžeš původní text posunout.
memset vyplní buffer zadanou hodnotu. Tim můžeš zbytek vyplnit mezerami, nebo čím potřebuješ.
To se mi zdá nejjednodušší.
Není mi jasné, co potřebuješ udělat, ale můžeš bindovat na 0.0.0.0. Jinak musíš mít samostatný socket pro každý interface.
Dal jsem tam jméno PHP skriptu, který rrdtoolem generuje obrázek. Obrázek, obrázek, obrázek. Jen to stahuje obrázky. Je to adresa obrázku. To nerozumí RRD databázi a neřeší to, co na tom obrázku je, kromě toho, že očekává, že bude podle těch parametrů start/end/atd.
Nemusíš tomu vysvětlovat, co v té databázi je. Tak jak jsem ten příkaz napsal... rrdtool blabla a dalsi parametry jak chces. Jen vygeneruj obrázek jaký chceš.
Můžeš použít ten tvůj bashovský skript. Jen ho takhle uprav, aby přijímal parametry:
...
FILE=${1:-$DIR1/graf_deni.png}
START=${2:--1d}
END=${3:-now}
WIDTH=${4:-800}
HEIGHT=${5:-240}
#deni
rrdtool graph "$FILE" \
--watermark "Borisek" \
--start "$START" \
--end "$END" \
--width "$WIDTH" \
--height "$HEIGHT" \
COMMENT... ZBYTEK NECH TAK
JAK TO MAS
...
Ta konstrukce ${X:-Y} znamená, když je nastavené X, tak to bude X, jinak Y. Takže když ten skript bude spuštěn s parametry, tak se vezmou hodnoty těch parametrů, jinak se použijí hodnoty, které jsi tam měl původně a bude to fungovat stejně.
Do IMG dej ten rrdgen.php a v rrdgen.php teda volej ten tvůj shellskript.
<?php
$command = '/cesta/ktomu/tvemu/skriptu'
. ' - ' // soubor '-' znamená výpis na standardní výstup místo do souboru
. ' ' . escapeshellarg(@$_GET['start'])
. ' ' . escapeshellarg(@$_GET['end'])
. ' ' . escapeshellarg(@$_GET['width'])
. ' ' . escapeshellarg(@$_GET['height']);
passthru($command);
A když se ti to bude zdát pomalé (protože spouštění bashe je dementně pomalé), tak ten příkaz pro rrdgen napiš rovnou do toho php skriptu, jak ti celou dobu radím :)
A píšu to z hlavy, možná někde bude nějaká botka. Ale princip je snad konečně jasný.
Jaký button? Tak do třetice. V HTML je IMG tag s atributem DATA-SRC-TEMPLATE definujícím adresu obrázku. A JavaScript, který ten obrázek z té adresy podle potřeby načítá.
Takže budeš mít třeba soubor index.html, tak jak je v distibuci rrdGraphPng, a do šablony adresy dáš rrdgen.php
...
...
<div><img
style="width:695px;height:238px" class="graph"
data-src-template="rrdgen.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
/></div>
...
...
A pak budeš mít ten soubor rrdgen.php
<?php
který nějak produkuje obrázek
...
...
Konkrétně kam co napsat ti neporadím, protože to nevím. Ale jestli si s tím chceš hrát, tak v principu třeba takhle:
Nejdřív musíš ty vločky najít. To můžeš udělat projitím všech childů stage a otestováním, jestli daný child je vločka (operátor is; is snowflake). Lepší by bylo rovnou při vytváření je vkládat do nějakého kontejneru/kolekce, ať je nemusíš hledat. Pak tedy s těmi vločkami můžeš operovat.
A to, aby ti během dvou sekund dosnežilo můžeš udělat třeba tak, že vygeneruješ čas "teď + náhodná hodnota v intervalu 2s", po kterém se vločka killne. Nevím, jestli na to AS má nějakou standardní funkci, nebo vlastnost objektů, ale určitě si takovou vlastnost můžeš definovat sám. A pak ta vločka třeba ve frame handleru může hlídat, jestli už přišel její čas a pokud ano, tak se sama stopne a odstraní ze stage.
V PHP už jsi dělal, tak bys ho mohl poznat. Nebo bys mohl postřehnout, že když to zjevně spouští rrdtool, tak to asi bude to, co generuje ty grafy. Nebo si prostě přečíst, co píšu.
Takže když v té šabloně je rrdgen.php s parametry, tak to druhé je rrdgen.php, který hodíš na server a bude generovat grafy
Jo, já jsem nevěděl, co s čísly, která nepůjdou rozložit, ale ty tak vlastně na koncové nuly nemají vliv a nezajímaji nás. Takže spočítej kolik tam jakoby bude násobení dvojkou nebo pětkou a každá dvojice 2-5 udělá jednu nulu. Pokud se nepletu.
U mocnim deseti je to jasné, tam se počet nul sčítá. Pak ještě nulu "generuje" násobení 2 a 5. I ta 10 je vlastně 2*5. A v tom to bude. Nějak ty čísla rozlož, ale nevím jak.
Jako vždycky všechno, i tohle určitě staví an tom, co jste probírali. Tak pohledej v poznámkách.
Ten rrdGraphPng v JavaScriptu na straně klienta načte a zobrazí obrázek z adresy zadané v té šabloně s tím, že {{start}}, {{end}} apod v adrese nahradí aktuálními hodnotami. Když změníš období, nebo tím grafem šoupneš, tak to udělá znova s novými hodnotami.
Na straně serveru pak musíš zajistit, aby na té adrese byl požadovaný graf. Takže když v té šabloně je rrdgen.php s parametry, tak to druhé je rrdgen.php, který hodíš na server a bude generovat grafy podle požadovaných parametrů. Vždycky znova, nic se nikam neukládá.
Můžeš to vykoumat jakkoliv jinak, jde jen o princip.
$args = ['start', 'end', 'width', 'height', 'zoom'];
$args = array_map(function($arg) {
return isset($_GET[$arg]) ? "--$arg " . escapeshellarg($_GET[$arg]) : '';
}, $args);
$command = 'rrdtool graph - ' . join(' ', $args)
. ' DEF:blabla a dalsi'
. ' parametry jak chces';
passthru($command);
Vždyť je tot am popsané. Jen to tahá obrázky ze serveru.
Takže do img dáš místo graphA třeba rrdgen.php:
data-src-template="rrdgen.php?width={{width}}&height={{height}}&start={{start}}&end={{end}}&zoom={{zoom}}&rand={{random}}"
A v něm třeba budeš generovat ty grafy.
Mně se to nepodařilo navodit (starý gcc/clang), ale tipuju, že to po tobě chce operator int, protože jako jediný použitelný konstruktor vidí ten pro int.
U toho kopírovacícho kontruktoru deklaruj tu referenci jako const.
obraty = [
[1, 2, 3, 4], # prodejna 0
[5, 6, 7], # prodejna 1
#...
]
sumy = [sum(o) for o in obraty]
for i, suma in enumerate(sumy):
print("SUMA{} = {}".format(i + 1, suma))
Na to se právě hodí to pole, místo samostatných proměnných. K hodnotám se pak přistupuje přes [index] pro zápis i čtení.
suma = [0] * 10
suma[0] = 1 + 2
# ...
suma[5] = 3 + 4
for i in range(10):
print(i, "=", suma[i])
for i in range(1, 11):
suma[i] = 0
Tipuju, že je to pascalovské pole indexované od 1. Bacha na to, že v Pythonu se indexuje od 0.
Tak jsi na to přišel sám, ale místo nahrazování mezer, bych doporučil něco jako urlencode nebo http_build_query, které ošetří všechno.
Mně asi něco uniká, ale toto
set Tabulka1.A= Tabulka2.B
where Tabulka2.B= 1
snad dělá toto
set Tabulka1.A= 1
where Tabulka2.B= 1
A místo 1 to teda chceš nastavit na 0 ? Tak to asi nevykoumáme...
...
lcdVisible: true,
lcdDecimals: 1
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title>Canvas Steel</title>
<script>
function init() {
// Define value gradient for bargraph
var valGrad = new steelseries.gradientWrapper(0,
100, [0, 0.33, 0.66, 0.85, 1], [new steelseries.rgbaColor(0, 0, 200, 1),
new steelseries.rgbaColor(0, 200, 0, 1),
new steelseries.rgbaColor(200, 200, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1)
]);
linear7 = new steelseries.Linear('canvasLinear7', {
width: 140,
height: 320,
gaugeType: steelseries.GaugeType.TYPE2,
titleString: "Thermometer",
unitString: "Unit",
threshold: 21,
lcdVisible: true
});
nactiKotel(linear7);
setInterval(function() {
nactiKotel(linear7);
}, 1000);
}
function nactiKotel(gauge) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var teplota = parseInt(this.responseText); // to mozna neni potreba
gauge.setValueAnimated(teplota);
}
};
xhttp.open("GET", "shm/teplota_kotel", true);
xhttp.send();
}
</script>
<script src="tween-min.js"></script>
<script src="steelseries-min.js"></script>
</head>
<body onload="init()" style="background-color:#84a5ed">
<canvas id="canvasLinear7" width="140" height="320"></canvas>
</body>
</html>
Tak na tom odkazu je vedle tween-min.js i tween.js. Hádej co v něm je.
A pro tuhle úpravu ho vůbec nepotřebuješ číst. Prostě místo náhodné hodnoty nastav tu svoji načtenou.
#1 Borisek
Interpretr nepotřebuje, aby byl zdroják pěkně formátovaný. Pro zrychlení přenosu a zpracování se skripty často minifikují. Takže typicky existuje čitelná verze kódu, na které se pracuje, a z ní se generuje zhuštěná verze, která se distribuuje.
#25 juraj175
Takové jaké si je uděláš. Třeba je můžeš po každém obrázku posunovat.
$x = startx;
$y = starty;
while ...
image(... $x, $y, ...);
$x += posunx;
$y += posuny;
char kde[] = "blablabla";
char co[] = "la";
char *p = kde;
while ((p = strstr(p, co)) != NULL) {
printf("%d\n", (int) (p - kde));
p += strlen(co);
}
Focus nedostává form, ale ten textbox. Na něm ohandluj Got/LostFocus.
SVG jde vložit funkcí ImageSVG, ale to má stejný efekt jako img v html.
Problém je v tom, že TCPDF nepodporuje tag symbol. Pokud ten generátor umožňuje vybrat verzi, tak zkus SVG 1.0. Jinak můžeš to SVG nejjednodušeji (prasácky) upravit přehozením atributu id ze symbol do toho vnořeného path.
'x={}t+{}'.format(2, 3)
Máš Lazarus 1.9 nebo novější?
1. Mildly infuriating... Máš tam mime type pro DOCX, příponu OTT a dokument je HTML.
2. Mně se to při "externím" otevření zobrazí normálně a při dalším otevření z historie jako pro web. Vypadá to, že jakmile LO ví, že je to HTML, tak použije zobrazení Web.
3. Prostě si to přepni v menu Zobraziť :)
Indexes způsobuje, že při přístupu k adresáří, ve kterém není index.php (nebo index.html, nebo cokoliv je nastavené jako Index), se vypíše seznam souborů.
MultiViews způsobuje, že při přístupu k neexistujícímu souboru se naservíruje jiný soubor s podobným název, pokud existuje (zjednodušeně řečeno).
Je otázka, co se pokoušíš rozchodit a jak moc potřebuješ tyto direktivy vypnout, ale obecně by to aplikaci nemělo znefunkčnit.
Takže jestli stojíš na tom, že ti web nechodí kvůli nepovoleným direktivám, tak je můžeš prostě smazat.
Mezi hlavičkami nemáš odřádkování. Předmět je součástí hlaviček a kódování se uvádí samostatně, resp. v jeho obsahu. Pro PHP je spousta knihoven, které umí správně naformátovat email, tak některou použij.
#13 krpik
Všimni si, jak jsem napsal Add mezi testy otevírací a uzavírací značky, právě proto aby ten příznak pokryl i uzavírací řádek.
Pokud ty značky můžou být uprostřed textu, tak odmažeš jen část od/do pozice, kterou ti vrátí indexOf.
Ale je to zbytečně složité. Prostě ten soubor nenačítej po řádcích, ale načti ho celý a vymaž ty komentáře jednoduchým Regexem.
Ideální by samozřejmě bylo požít nějaký pořádný X(HT)ML parser.
TIJ se docela dlouho překládala do Slovenštiny - http://groups.yahoo.com/group/tij2sk/ .
Netuším v jakém je to stavu, protože se mi tam nechce registrovat, ale můžeš to zkusit.
Protože každá Item je jen jeden řádek. Takže můžeš použít to procházení s pamatováním stavu, nebo to nahrazení udělej na kompletním textu. Nějak nevidím důvod proč zobrazovat soubor v listboxu.
Bohužel k tomuhle není pořádná dokumentace, takže když předem nevíš co hledat, tak se to hledá špatně :)
from tkinter.filedialog import askopenfilename
fname = askopenfilename(filetypes=(('Image files', ('*.jpg', '*.png')),
('All files', '*.*')))
if fname:
print('Vybrany soubor:', fname)
Dim items = {"AA","<!-- BB -->","CC","<!-- DD","DD","DD -->","EE"}
Dim fixed As New List(Of String)
Dim skip As Boolean = False
For Each item As String In items
If item.StartsWith("<!--") Then skip =True
If Not Skip Then fixed.Add(item)
If item.EndsWith("-->") Then skip = False
Next
Dim data = "AA<!-- BB -->CC<!-- DD -->EE"
Dim fixed = Regex.Replace(data, "<!-- .*? -->", "", RegexOptions.Singleline)
Druhý paramater ReadAllLines určuje kódování souboru. Zkusil bych Encoding.UTF8, nebo Encoding.GetEncoding(1250).
To je teda obdoba toho, co dostáváš teď. To je špatně, pokud rubbish má být mezi znaky, ne za každým z nich (včetně posledního).
"Správné" řešení je asi toto:
def dummy(text, rubbish):
return rubbish.join(text)
def dummy(text, rubbish):
vysledek = ''
for znak in text:
vysledek += znak + rubbish
return vysledek