| 1 | package org.jsoup; | |
| 2 | ||
| 3 | import org.jsoup.nodes.Document; | |
| 4 | import org.jsoup.parser.Parser; | |
| 5 | ||
| 6 | import javax.net.ssl.SSLSocketFactory; | |
| 7 | import java.io.BufferedInputStream; | |
| 8 | import java.io.IOException; | |
| 9 | import java.io.InputStream; | |
| 10 | import java.net.Proxy; | |
| 11 | import java.net.URL; | |
| 12 | import java.util.Collection; | |
| 13 | import java.util.List; | |
| 14 | import java.util.Map; | |
| 15 | ||
| 16 | /** | |
| 17 | * A Connection provides a convenient interface to fetch content from the web, and parse them into Documents. | |
| 18 | *
 | |
| 19 | * To get a new Connection, use {@link org.jsoup.Jsoup#connect(String)}. Connections contain {@link Connection.Request} | |
| 20 | * and {@link Connection.Response} objects. The request objects are reusable as prototype requests. | |
| 21 | *
 | |
| 22 | *
 | |
| 23 | * Request configuration can be made using either the shortcut methods in Connection (e.g. {@link #userAgent(String)}), | |
| 24 | * or by methods in the Connection.Request object directly. All request configuration must be made before the request is | |
| 25 | * executed. | |
| 26 | *
 | |
| 27 | */ | |
| 28 | public interface Connection { | |
| 29 | ||
| 30 | /** | |
| 31 | * GET and POST http methods. | |
| 32 | */ | |
| 33 | enum Method { | |
| 34 | GET(false), POST(true), PUT(true), DELETE(false), PATCH(true), HEAD(false), OPTIONS(false), TRACE(false); | |
| 35 | ||
| 36 | private final boolean hasBody; | |
| 37 | ||
| 38 | Method(boolean hasBody) { | |
| 39 | this.hasBody = hasBody; | |
| 40 | } | |
| 41 | ||
| 42 | /** | |
| 43 | * Check if this HTTP method has/needs a request body | |
| 44 | * @return if body needed | |
| 45 | */ | |
| 46 | public final boolean hasBody() { | |
| 47 |
1
1. hasBody : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return hasBody; |
| 48 | } | |
| 49 | } | |
| 50 | ||
| 51 | /** | |
| 52 | * Set the request URL to fetch. The protocol must be HTTP or HTTPS. | |
| 53 | * @param url URL to connect to | |
| 54 | * @return this Connection, for chaining | |
| 55 | */ | |
| 56 | Connection url(URL url); | |
| 57 | ||
| 58 | /** | |
| 59 | * Set the request URL to fetch. The protocol must be HTTP or HTTPS. | |
| 60 | * @param url URL to connect to | |
| 61 | * @return this Connection, for chaining | |
| 62 | */ | |
| 63 | Connection url(String url); | |
| 64 | ||
| 65 | /** | |
| 66 | * Set the proxy to use for this request. Set to null to disable. | |
| 67 | * @param proxy proxy to use | |
| 68 | * @return this Connection, for chaining | |
| 69 | */ | |
| 70 | Connection proxy(Proxy proxy); | |
| 71 | ||
| 72 | /** | |
| 73 | * Set the HTTP proxy to use for this request. | |
| 74 | * @param host the proxy hostname | |
| 75 | * @param port the proxy port | |
| 76 | * @return this Connection, for chaining | |
| 77 | */ | |
| 78 | Connection proxy(String host, int port); | |
| 79 | ||
| 80 | /** | |
| 81 | * Set the request user-agent header. | |
| 82 | * @param userAgent user-agent to use | |
| 83 | * @return this Connection, for chaining | |
| 84 | * @see org.jsoup.helper.HttpConnection#DEFAULT_UA | |
| 85 | */ | |
| 86 | Connection userAgent(String userAgent); | |
| 87 | ||
| 88 | /** | |
| 89 | * Set the total request timeout duration. If a timeout occurs, an {@link java.net.SocketTimeoutException} will be thrown. | |
| 90 | *
The default timeout is 30 seconds (30,000 millis). A timeout of zero is treated as an infinite timeout. | |
| 91 | *
Note that this timeout specifies the combined maximum duration of the connection time and the time to read | |
| 92 | * the full response. | |
| 93 | * @param millis number of milliseconds (thousandths of a second) before timing out connects or reads. | |
| 94 | * @return this Connection, for chaining | |
| 95 | * @see #maxBodySize(int) | |
| 96 | */ | |
| 97 | Connection timeout(int millis); | |
| 98 | ||
| 99 | /** | |
| 100 | * Set the maximum bytes to read from the (uncompressed) connection into the body, before the connection is closed, | |
| 101 | * and the input truncated. The default maximum is 1MB. A max size of zero is treated as an infinite amount (bounded | |
| 102 | * only by your patience and the memory available on your machine). | |
| 103 | * @param bytes number of bytes to read from the input before truncating | |
| 104 | * @return this Connection, for chaining | |
| 105 | */ | |
| 106 | Connection maxBodySize(int bytes); | |
| 107 | ||
| 108 | /** | |
| 109 | * Set the request referrer (aka "referer") header. | |
| 110 | * @param referrer referrer to use | |
| 111 | * @return this Connection, for chaining | |
| 112 | */ | |
| 113 | Connection referrer(String referrer); | |
| 114 | ||
| 115 | /** | |
| 116 | * Configures the connection to (not) follow server redirects. By default this is true. | |
| 117 | * @param followRedirects true if server redirects should be followed. | |
| 118 | * @return this Connection, for chaining | |
| 119 | */ | |
| 120 | Connection followRedirects(boolean followRedirects); | |
| 121 | ||
| 122 | /** | |
| 123 | * Set the request method to use, GET or POST. Default is GET. | |
| 124 | * @param method HTTP request method | |
| 125 | * @return this Connection, for chaining | |
| 126 | */ | |
| 127 | Connection method(Method method); | |
| 128 | ||
| 129 | /** | |
| 130 | * Configures the connection to not throw exceptions when a HTTP error occurs. (4xx - 5xx, e.g. 404 or 500). By | |
| 131 | * default this is false; an IOException is thrown if an error is encountered. If set to true, the | |
| 132 | * response is populated with the error body, and the status message will reflect the error. | |
| 133 | * @param ignoreHttpErrors - false (default) if HTTP errors should be ignored. | |
| 134 | * @return this Connection, for chaining | |
| 135 | */ | |
| 136 | Connection ignoreHttpErrors(boolean ignoreHttpErrors); | |
| 137 | ||
| 138 | /** | |
| 139 | * Ignore the document's Content-Type when parsing the response. By default this is false, an unrecognised | |
| 140 | * content-type will cause an IOException to be thrown. (This is to prevent producing garbage by attempting to parse | |
| 141 | * a JPEG binary image, for example.) Set to true to force a parse attempt regardless of content type. | |
| 142 | * @param ignoreContentType set to true if you would like the content type ignored on parsing the response into a | |
| 143 | * Document. | |
| 144 | * @return this Connection, for chaining | |
| 145 | */ | |
| 146 | Connection ignoreContentType(boolean ignoreContentType); | |
| 147 | ||
| 148 | /** | |
| 149 | * Disable/enable TLS certificates validation for HTTPS requests. | |
| 150 | *
 | |
| 151 | * By default this is true; all | |
| 152 | * connections over HTTPS perform normal validation of certificates, and will abort requests if the provided | |
| 153 | * certificate does not validate. | |
| 154 | *
 | |
| 155 | *
 | |
| 156 | * Some servers use expired, self-generated certificates; or your JDK may not | |
| 157 | * support SNI hosts. In which case, you may want to enable this setting. | |
| 158 | *
 | |
| 159 | *
 | |
| 160 | * Be careful and understand why you need to disable these validations. | |
| 161 | *
 | |
| 162 | * @param value if should validate TLS (SSL) certificates. true by default. | |
| 163 | * @return this Connection, for chaining | |
| 164 | * @deprecated as distributions (specifically Google Play) are starting to show warnings if these checks are | |
| 165 | * disabled. | |
| 166 | */ | |
| 167 | Connection validateTLSCertificates(boolean value); | |
| 168 | ||
| 169 | /** | |
| 170 | * Set custom SSL socket factory | |
| 171 | * @param sslSocketFactory custom SSL socket factory | |
| 172 | * @return this Connection, for chaining | |
| 173 | */ | |
| 174 | Connection sslSocketFactory(SSLSocketFactory sslSocketFactory); | |
| 175 | ||
| 176 | /** | |
| 177 | * Add a request data parameter. Request parameters are sent in the request query string for GETs, and in the | |
| 178 | * request body for POSTs. A request may have multiple values of the same name. | |
| 179 | * @param key data key | |
| 180 | * @param value data value | |
| 181 | * @return this Connection, for chaining | |
| 182 | */ | |
| 183 | Connection data(String key, String value); | |
| 184 | ||
| 185 | /** | |
| 186 | * Add an input stream as a request data parameter. For GETs, has no effect, but for POSTS this will upload the | |
| 187 | * input stream. | |
| 188 | * @param key data key (form item name) | |
| 189 | * @param filename the name of the file to present to the remove server. Typically just the name, not path, | |
| 190 | * component. | |
| 191 | * @param inputStream the input stream to upload, that you probably obtained from a {@link java.io.FileInputStream}. | |
| 192 | * You must close the InputStream in a {@code finally} block. | |
| 193 | * @return this Connections, for chaining | |
| 194 | * @see #data(String, String, InputStream, String) if you want to set the uploaded file's mimetype. | |
| 195 | */ | |
| 196 | Connection data(String key, String filename, InputStream inputStream); | |
| 197 | ||
| 198 | /** | |
| 199 | * Add an input stream as a request data parameter. For GETs, has no effect, but for POSTS this will upload the | |
| 200 | * input stream. | |
| 201 | * @param key data key (form item name) | |
| 202 | * @param filename the name of the file to present to the remove server. Typically just the name, not path, | |
| 203 | * component. | |
| 204 | * @param inputStream the input stream to upload, that you probably obtained from a {@link java.io.FileInputStream}. | |
| 205 | * @param contentType the Content Type (aka mimetype) to specify for this file. | |
| 206 | * You must close the InputStream in a {@code finally} block. | |
| 207 | * @return this Connections, for chaining | |
| 208 | */ | |
| 209 | Connection data(String key, String filename, InputStream inputStream, String contentType); | |
| 210 | ||
| 211 | /** | |
| 212 | * Adds all of the supplied data to the request data parameters | |
| 213 | * @param data collection of data parameters | |
| 214 | * @return this Connection, for chaining | |
| 215 | */ | |
| 216 | Connection data(Collection<KeyVal> data); | |
| 217 | ||
| 218 | /** | |
| 219 | * Adds all of the supplied data to the request data parameters | |
| 220 | * @param data map of data parameters | |
| 221 | * @return this Connection, for chaining | |
| 222 | */ | |
| 223 | Connection data(Map<String, String> data); | |
| 224 | ||
| 225 | /** | |
| 226 | * Add a number of request data parameters. Multiple parameters may be set at once, e.g.: .data("name", | |
| 227 | * "jsoup", "language", "Java", "language", "English"); creates a query string like: | |
| 228 | * {@literal ?name=jsoup&language=Java&language=English} | |
| 229 | * @param keyvals a set of key value pairs. | |
| 230 | * @return this Connection, for chaining | |
| 231 | */ | |
| 232 | Connection data(String... keyvals); | |
| 233 | ||
| 234 | /** | |
| 235 | * Get the data KeyVal for this key, if any | |
| 236 | * @param key the data key | |
| 237 | * @return null if not set | |
| 238 | */ | |
| 239 | KeyVal data(String key); | |
| 240 | ||
| 241 | /** | |
| 242 | * Set a POST (or PUT) request body. Useful when a server expects a plain request body, not a set for URL | |
| 243 | * encoded form key/value pairs. E.g.: | |
| 244 | *
Jsoup.connect(url) | |
| 245 | * .requestBody(json) | |
| 246 | * .header("Content-Type", "application/json") | |
| 247 | * .post();
 | |
| 248 | * If any data key/vals are supplied, they will be sent as URL query params. | |
| 249 | * @return this Request, for chaining | |
| 250 | */ | |
| 251 | Connection requestBody(String body); | |
| 252 | ||
| 253 | /** | |
| 254 | * Set a request header. | |
| 255 | * @param name header name | |
| 256 | * @param value header value | |
| 257 | * @return this Connection, for chaining | |
| 258 | * @see org.jsoup.Connection.Request#headers() | |
| 259 | */ | |
| 260 | Connection header(String name, String value); | |
| 261 | ||
| 262 | /** | |
| 263 | * Adds each of the supplied headers to the request. | |
| 264 | * @param headers map of headers name {@literal ->} value pairs | |
| 265 | * @return this Connection, for chaining | |
| 266 | * @see org.jsoup.Connection.Request#headers() | |
| 267 | */ | |
| 268 | Connection headers(Map<String,String> headers); | |
| 269 | ||
| 270 | /** | |
| 271 | * Set a cookie to be sent in the request. | |
| 272 | * @param name name of cookie | |
| 273 | * @param value value of cookie | |
| 274 | * @return this Connection, for chaining | |
| 275 | */ | |
| 276 | Connection cookie(String name, String value); | |
| 277 | ||
| 278 | /** | |
| 279 | * Adds each of the supplied cookies to the request. | |
| 280 | * @param cookies map of cookie name {@literal ->} value pairs | |
| 281 | * @return this Connection, for chaining | |
| 282 | */ | |
| 283 | Connection cookies(Map<String, String> cookies); | |
| 284 | ||
| 285 | /** | |
| 286 | * Provide an alternate parser to use when parsing the response to a Document. If not set, defaults to the HTML | |
| 287 | * parser, unless the response content-type is XML, in which case the XML parser is used. | |
| 288 | * @param parser alternate parser | |
| 289 | * @return this Connection, for chaining | |
| 290 | */ | |
| 291 | Connection parser(Parser parser); | |
| 292 | ||
| 293 | /** | |
| 294 | * Sets the default post data character set for x-www-form-urlencoded post data | |
| 295 | * @param charset character set to encode post data | |
| 296 | * @return this Connection, for chaining | |
| 297 | */ | |
| 298 | Connection postDataCharset(String charset); | |
| 299 | ||
| 300 | /** | |
| 301 | * Execute the request as a GET, and parse the result. | |
| 302 | * @return parsed Document | |
| 303 | * @throws java.net.MalformedURLException if the request URL is not a HTTP or HTTPS URL, or is otherwise malformed | |
| 304 | * @throws HttpStatusException if the response is not OK and HTTP response errors are not ignored | |
| 305 | * @throws UnsupportedMimeTypeException if the response mime type is not supported and those errors are not ignored | |
| 306 | * @throws java.net.SocketTimeoutException if the connection times out | |
| 307 | * @throws IOException on error | |
| 308 | */ | |
| 309 | Document get() throws IOException; | |
| 310 | ||
| 311 | /** | |
| 312 | * Execute the request as a POST, and parse the result. | |
| 313 | * @return parsed Document | |
| 314 | * @throws java.net.MalformedURLException if the request URL is not a HTTP or HTTPS URL, or is otherwise malformed | |
| 315 | * @throws HttpStatusException if the response is not OK and HTTP response errors are not ignored | |
| 316 | * @throws UnsupportedMimeTypeException if the response mime type is not supported and those errors are not ignored | |
| 317 | * @throws java.net.SocketTimeoutException if the connection times out | |
| 318 | * @throws IOException on error | |
| 319 | */ | |
| 320 | Document post() throws IOException; | |
| 321 | ||
| 322 | /** | |
| 323 | * Execute the request. | |
| 324 | * @return a response object | |
| 325 | * @throws java.net.MalformedURLException if the request URL is not a HTTP or HTTPS URL, or is otherwise malformed | |
| 326 | * @throws HttpStatusException if the response is not OK and HTTP response errors are not ignored | |
| 327 | * @throws UnsupportedMimeTypeException if the response mime type is not supported and those errors are not ignored | |
| 328 | * @throws java.net.SocketTimeoutException if the connection times out | |
| 329 | * @throws IOException on error | |
| 330 | */ | |
| 331 | Response execute() throws IOException; | |
| 332 | ||
| 333 | /** | |
| 334 | * Get the request object associated with this connection | |
| 335 | * @return request | |
| 336 | */ | |
| 337 | Request request(); | |
| 338 | ||
| 339 | /** | |
| 340 | * Set the connection's request | |
| 341 | * @param request new request object | |
| 342 | * @return this Connection, for chaining | |
| 343 | */ | |
| 344 | Connection request(Request request); | |
| 345 | ||
| 346 | /** | |
| 347 | * Get the response, once the request has been executed | |
| 348 | * @return response | |
| 349 | */ | |
| 350 | Response response(); | |
| 351 | ||
| 352 | /** | |
| 353 | * Set the connection's response | |
| 354 | * @param response new response | |
| 355 | * @return this Connection, for chaining | |
| 356 | */ | |
| 357 | Connection response(Response response); | |
| 358 | ||
| 359 | /** | |
| 360 | * Common methods for Requests and Responses | |
| 361 | * @param <T> Type of Base, either Request or Response | |
| 362 | */ | |
| 363 | interface Base<T extends Base> { | |
| 364 | ||
| 365 | /** | |
| 366 | * Get the URL | |
| 367 | * @return URL | |
| 368 | */ | |
| 369 | URL url(); | |
| 370 | ||
| 371 | /** | |
| 372 | * Set the URL | |
| 373 | * @param url new URL | |
| 374 | * @return this, for chaining | |
| 375 | */ | |
| 376 | T url(URL url); | |
| 377 | ||
| 378 | /** | |
| 379 | * Get the request method | |
| 380 | * @return method | |
| 381 | */ | |
| 382 | Method method(); | |
| 383 | ||
| 384 | /** | |
| 385 | * Set the request method | |
| 386 | * @param method new method | |
| 387 | * @return this, for chaining | |
| 388 | */ | |
| 389 | T method(Method method); | |
| 390 | ||
| 391 | /** | |
| 392 | * Get the value of a header. If there is more than one header value with the same name, the headers are returned | |
| 393 | * comma seperated, per rfc2616-sec4. | |
| 394 | *
 | |
| 395 | * Header names are case insensitive. | |
| 396 | *
 | |
| 397 | * @param name name of header (case insensitive) | |
| 398 | * @return value of header, or null if not set. | |
| 399 | * @see #hasHeader(String) | |
| 400 | * @see #cookie(String) | |
| 401 | */ | |
| 402 | String header(String name); | |
| 403 | ||
| 404 | /** | |
| 405 | * Get the values of a header. | |
| 406 | * @param name header name, case insensitive. | |
| 407 | * @return a list of values for this header, or an empty list if not set. | |
| 408 | */ | |
| 409 | List<String> headers(String name); | |
| 410 | ||
| 411 | /** | |
| 412 | * Set a header. This method will overwrite any existing header with the same case insensitive name. (If there | |
| 413 | * is more than one value for this header, this method will update the first matching header. | |
| 414 | * @param name Name of header | |
| 415 | * @param value Value of header | |
| 416 | * @return this, for chaining | |
| 417 | * @see #addHeader(String, String) | |
| 418 | */ | |
| 419 | T header(String name, String value); | |
| 420 | ||
| 421 | /** | |
| 422 | * Add a header. The header will be added regardless of whether a header with the same name already exists. | |
| 423 | * @param name Name of new header | |
| 424 | * @param value Value of new header | |
| 425 | * @return this, for chaining | |
| 426 | */ | |
| 427 | T addHeader(String name, String value); | |
| 428 | ||
| 429 | /** | |
| 430 | * Check if a header is present | |
| 431 | * @param name name of header (case insensitive) | |
| 432 | * @return if the header is present in this request/response | |
| 433 | */ | |
| 434 | boolean hasHeader(String name); | |
| 435 | ||
| 436 | /** | |
| 437 | * Check if a header is present, with the given value | |
| 438 | * @param name header name (case insensitive) | |
| 439 | * @param value value (case insensitive) | |
| 440 | * @return if the header and value pair are set in this req/res | |
| 441 | */ | |
| 442 | boolean hasHeaderWithValue(String name, String value); | |
| 443 | ||
| 444 | /** | |
| 445 | * Remove headers by name. If there is more than one header with this name, they will all be removed. | |
| 446 | * @param name name of header to remove (case insensitive) | |
| 447 | * @return this, for chaining | |
| 448 | */ | |
| 449 | T removeHeader(String name); | |
| 450 | ||
| 451 | /** | |
| 452 | * Retrieve all of the request/response header names and corresponding values as a map. For headers with multiple | |
| 453 | * values, only the first header is returned. | |
| 454 | *
Note that this is a view of the headers only, and changes made to this map will not be reflected in the | |
| 455 | * request/response object.
 | |
| 456 | * @return headers | |
| 457 | * @see #multiHeaders() | |
| 458 | ||
| 459 | */ | |
| 460 | Map<String, String> headers(); | |
| 461 | ||
| 462 | /** | |
| 463 | * Retreive all of the headers, keyed by the header name, and with a list of values per header. | |
| 464 | * @return a list of multiple values per header. | |
| 465 | */ | |
| 466 | Map<String, List<String>> multiHeaders(); | |
| 467 | ||
| 468 | /** | |
| 469 | * Get a cookie value by name from this request/response. | |
| 470 | *
 | |
| 471 | * Response objects have a simplified cookie model. Each cookie set in the response is added to the response | |
| 472 | * object's cookie key=value map. The cookie's path, domain, and expiry date are ignored. | |
| 473 | *
 | |
| 474 | * @param name name of cookie to retrieve. | |
| 475 | * @return value of cookie, or null if not set | |
| 476 | */ | |
| 477 | String cookie(String name); | |
| 478 | ||
| 479 | /** | |
| 480 | * Set a cookie in this request/response. | |
| 481 | * @param name name of cookie | |
| 482 | * @param value value of cookie | |
| 483 | * @return this, for chaining | |
| 484 | */ | |
| 485 | T cookie(String name, String value); | |
| 486 | ||
| 487 | /** | |
| 488 | * Check if a cookie is present | |
| 489 | * @param name name of cookie | |
| 490 | * @return if the cookie is present in this request/response | |
| 491 | */ | |
| 492 | boolean hasCookie(String name); | |
| 493 | ||
| 494 | /** | |
| 495 | * Remove a cookie by name | |
| 496 | * @param name name of cookie to remove | |
| 497 | * @return this, for chaining | |
| 498 | */ | |
| 499 | T removeCookie(String name); | |
| 500 | ||
| 501 | /** | |
| 502 | * Retrieve all of the request/response cookies as a map | |
| 503 | * @return cookies | |
| 504 | */ | |
| 505 | Map<String, String> cookies(); | |
| 506 | } | |
| 507 | ||
| 508 | /** | |
| 509 | * Represents a HTTP request. | |
| 510 | */ | |
| 511 | interface Request extends Base<Request> { | |
| 512 | /** | |
| 513 | * Get the proxy used for this request. | |
| 514 | * @return the proxy; null if not enabled. | |
| 515 | */ | |
| 516 | Proxy proxy(); | |
| 517 | ||
| 518 | /** | |
| 519 | * Update the proxy for this request. | |
| 520 | * @param proxy the proxy ot use; null to disable. | |
| 521 | * @return this Request, for chaining | |
| 522 | */ | |
| 523 | Request proxy(Proxy proxy); | |
| 524 | ||
| 525 | /** | |
| 526 | * Set the HTTP proxy to use for this request. | |
| 527 | * @param host the proxy hostname | |
| 528 | * @param port the proxy port | |
| 529 | * @return this Connection, for chaining | |
| 530 | */ | |
| 531 | Request proxy(String host, int port); | |
| 532 | ||
| 533 | /** | |
| 534 | * Get the request timeout, in milliseconds. | |
| 535 | * @return the timeout in milliseconds. | |
| 536 | */ | |
| 537 | int timeout(); | |
| 538 | ||
| 539 | /** | |
| 540 | * Update the request timeout. | |
| 541 | * @param millis timeout, in milliseconds | |
| 542 | * @return this Request, for chaining | |
| 543 | */ | |
| 544 | Request timeout(int millis); | |
| 545 | ||
| 546 | /** | |
| 547 | * Get the maximum body size, in bytes. | |
| 548 | * @return the maximum body size, in bytes. | |
| 549 | */ | |
| 550 | int maxBodySize(); | |
| 551 | ||
| 552 | /** | |
| 553 | * Update the maximum body size, in bytes. | |
| 554 | * @param bytes maximum body size, in bytes. | |
| 555 | * @return this Request, for chaining | |
| 556 | */ | |
| 557 | Request maxBodySize(int bytes); | |
| 558 | ||
| 559 | /** | |
| 560 | * Get the current followRedirects configuration. | |
| 561 | * @return true if followRedirects is enabled. | |
| 562 | */ | |
| 563 | boolean followRedirects(); | |
| 564 | ||
| 565 | /** | |
| 566 | * Configures the request to (not) follow server redirects. By default this is true. | |
| 567 | * @param followRedirects true if server redirects should be followed. | |
| 568 | * @return this Request, for chaining | |
| 569 | */ | |
| 570 | Request followRedirects(boolean followRedirects); | |
| 571 | ||
| 572 | /** | |
| 573 | * Get the current ignoreHttpErrors configuration. | |
| 574 | * @return true if errors will be ignored; false (default) if HTTP errors will cause an IOException to be | |
| 575 | * thrown. | |
| 576 | */ | |
| 577 | boolean ignoreHttpErrors(); | |
| 578 | ||
| 579 | /** | |
| 580 | * Configures the request to ignore HTTP errors in the response. | |
| 581 | * @param ignoreHttpErrors set to true to ignore HTTP errors. | |
| 582 | * @return this Request, for chaining | |
| 583 | */ | |
| 584 | Request ignoreHttpErrors(boolean ignoreHttpErrors); | |
| 585 | ||
| 586 | /** | |
| 587 | * Get the current ignoreContentType configuration. | |
| 588 | * @return true if invalid content-types will be ignored; false (default) if they will cause an IOException to | |
| 589 | * be thrown. | |
| 590 | */ | |
| 591 | boolean ignoreContentType(); | |
| 592 | ||
| 593 | /** | |
| 594 | * Configures the request to ignore the Content-Type of the response. | |
| 595 | * @param ignoreContentType set to true to ignore the content type. | |
| 596 | * @return this Request, for chaining | |
| 597 | */ | |
| 598 | Request ignoreContentType(boolean ignoreContentType); | |
| 599 | ||
| 600 | /** | |
| 601 | * Get the current state of TLS (SSL) certificate validation. | |
| 602 | * @return true if TLS cert validation enabled | |
| 603 | * @deprecated | |
| 604 | */ | |
| 605 | boolean validateTLSCertificates(); | |
| 606 | ||
| 607 | /** | |
| 608 | * Set TLS certificate validation. True by default. | |
| 609 | * @param value set false to ignore TLS (SSL) certificates | |
| 610 | * @deprecated as distributions (specifically Google Play) are starting to show warnings if these checks are | |
| 611 | * disabled. This method will be removed in the next release. | |
| 612 | * @see #sslSocketFactory(SSLSocketFactory) | |
| 613 | */ | |
| 614 | void validateTLSCertificates(boolean value); | |
| 615 | ||
| 616 | /** | |
| 617 | * Get the current custom SSL socket factory, if any. | |
| 618 | * @return custom SSL socket factory if set, null otherwise | |
| 619 | */ | |
| 620 | SSLSocketFactory sslSocketFactory(); | |
| 621 | ||
| 622 | /** | |
| 623 | * Set a custom SSL socket factory. | |
| 624 | * @param sslSocketFactory SSL socket factory | |
| 625 | */ | |
| 626 | void sslSocketFactory(SSLSocketFactory sslSocketFactory); | |
| 627 | ||
| 628 | /** | |
| 629 | * Add a data parameter to the request | |
| 630 | * @param keyval data to add. | |
| 631 | * @return this Request, for chaining | |
| 632 | */ | |
| 633 | Request data(KeyVal keyval); | |
| 634 | ||
| 635 | /** | |
| 636 | * Get all of the request's data parameters | |
| 637 | * @return collection of keyvals | |
| 638 | */ | |
| 639 | Collection<KeyVal> data(); | |
| 640 | ||
| 641 | /** | |
| 642 | * Set a POST (or PUT) request body. Useful when a server expects a plain request body, not a set for URL | |
| 643 | * encoded form key/value pairs. E.g.: | |
| 644 | *
Jsoup.connect(url) | |
| 645 | * .requestBody(json) | |
| 646 | * .header("Content-Type", "application/json") | |
| 647 | * .post();
 | |
| 648 | * If any data key/vals are supplied, they will be sent as URL query params. | |
| 649 | * @return this Request, for chaining | |
| 650 | */ | |
| 651 | Request requestBody(String body); | |
| 652 | ||
| 653 | /** | |
| 654 | * Get the current request body. | |
| 655 | * @return null if not set. | |
| 656 | */ | |
| 657 | String requestBody(); | |
| 658 | ||
| 659 | /** | |
| 660 | * Specify the parser to use when parsing the document. | |
| 661 | * @param parser parser to use. | |
| 662 | * @return this Request, for chaining | |
| 663 | */ | |
| 664 | Request parser(Parser parser); | |
| 665 | ||
| 666 | /** | |
| 667 | * Get the current parser to use when parsing the document. | |
| 668 | * @return current Parser | |
| 669 | */ | |
| 670 | Parser parser(); | |
| 671 | ||
| 672 | /** | |
| 673 | * Sets the post data character set for x-www-form-urlencoded post data | |
| 674 | * @param charset character set to encode post data | |
| 675 | * @return this Request, for chaining | |
| 676 | */ | |
| 677 | Request postDataCharset(String charset); | |
| 678 | ||
| 679 | /** | |
| 680 | * Gets the post data character set for x-www-form-urlencoded post data | |
| 681 | * @return character set to encode post data | |
| 682 | */ | |
| 683 | String postDataCharset(); | |
| 684 | ||
| 685 | } | |
| 686 | ||
| 687 | /** | |
| 688 | * Represents a HTTP response. | |
| 689 | */ | |
| 690 | interface Response extends Base<Response> { | |
| 691 | ||
| 692 | /** | |
| 693 | * Get the status code of the response. | |
| 694 | * @return status code | |
| 695 | */ | |
| 696 | int statusCode(); | |
| 697 | ||
| 698 | /** | |
| 699 | * Get the status message of the response. | |
| 700 | * @return status message | |
| 701 | */ | |
| 702 | String statusMessage(); | |
| 703 | ||
| 704 | /** | |
| 705 | * Get the character set name of the response, derived from the content-type header. | |
| 706 | * @return character set name | |
| 707 | */ | |
| 708 | String charset(); | |
| 709 | ||
| 710 | /** | |
| 711 | * Set / override the response character set. When the document body is parsed it will be with this charset. | |
| 712 | * @param charset to decode body as | |
| 713 | * @return this Response, for chaining | |
| 714 | */ | |
| 715 | Response charset(String charset); | |
| 716 | ||
| 717 | /** | |
| 718 | * Get the response content type (e.g. "text/html"); | |
| 719 | * @return the response content type | |
| 720 | */ | |
| 721 | String contentType(); | |
| 722 | ||
| 723 | /** | |
| 724 | * Read and parse the body of the response as a Document. If you intend to parse the same response multiple | |
| 725 | * times, you should {@link #bufferUp()} first. | |
| 726 | * @return a parsed Document | |
| 727 | * @throws IOException on error | |
| 728 | */ | |
| 729 | Document parse() throws IOException; | |
| 730 | ||
| 731 | /** | |
| 732 | * Get the body of the response as a plain string. | |
| 733 | * @return body | |
| 734 | */ | |
| 735 | String body(); | |
| 736 | ||
| 737 | /** | |
| 738 | * Get the body of the response as an array of bytes. | |
| 739 | * @return body bytes | |
| 740 | */ | |
| 741 | byte[] bodyAsBytes(); | |
| 742 | ||
| 743 | /** | |
| 744 | * Read the body of the response into a local buffer, so that {@link #parse()} may be called repeatedly on the | |
| 745 | * same connection response (otherwise, once the response is read, its InputStream will have been drained and | |
| 746 | * may not be re-read). Calling {@link #body() } or {@link #bodyAsBytes()} has the same effect. | |
| 747 | * @return this response, for chaining | |
| 748 | * @throws UncheckedIOException if an IO exception occurs during buffering. | |
| 749 | */ | |
| 750 | Response bufferUp(); | |
| 751 | ||
| 752 | /** | |
| 753 | * Get the body of the response as a (buffered) InputStream. You should close the input stream when you're done with it. | |
| 754 | * Other body methods (like bufferUp, body, parse, etc) will not work in conjunction with this method. | |
| 755 | *
This method is useful for writing large responses to disk, without buffering them completely into memory first.
 | |
| 756 | * @return the response body input stream | |
| 757 | */ | |
| 758 | BufferedInputStream bodyStream(); | |
| 759 | } | |
| 760 | ||
| 761 | /** | |
| 762 | * A Key:Value tuple(+), used for form data. | |
| 763 | */ | |
| 764 | interface KeyVal { | |
| 765 | ||
| 766 | /** | |
| 767 | * Update the key of a keyval | |
| 768 | * @param key new key | |
| 769 | * @return this KeyVal, for chaining | |
| 770 | */ | |
| 771 | KeyVal key(String key); | |
| 772 | ||
| 773 | /** | |
| 774 | * Get the key of a keyval | |
| 775 | * @return the key | |
| 776 | */ | |
| 777 | String key(); | |
| 778 | ||
| 779 | /** | |
| 780 | * Update the value of a keyval | |
| 781 | * @param value the new value | |
| 782 | * @return this KeyVal, for chaining | |
| 783 | */ | |
| 784 | KeyVal value(String value); | |
| 785 | ||
| 786 | /** | |
| 787 | * Get the value of a keyval | |
| 788 | * @return the value | |
| 789 | */ | |
| 790 | String value(); | |
| 791 | ||
| 792 | /** | |
| 793 | * Add or update an input stream to this keyVal | |
| 794 | * @param inputStream new input stream | |
| 795 | * @return this KeyVal, for chaining | |
| 796 | */ | |
| 797 | KeyVal inputStream(InputStream inputStream); | |
| 798 | ||
| 799 | /** | |
| 800 | * Get the input stream associated with this keyval, if any | |
| 801 | * @return input stream if set, or null | |
| 802 | */ | |
| 803 | InputStream inputStream(); | |
| 804 | ||
| 805 | /** | |
| 806 | * Does this keyval have an input stream? | |
| 807 | * @return true if this keyval does indeed have an input stream | |
| 808 | */ | |
| 809 | boolean hasInputStream(); | |
| 810 | ||
| 811 | /** | |
| 812 | * Set the Content Type header used in the MIME body (aka mimetype) when uploading files. | |
| 813 | * Only useful if {@link #inputStream(InputStream)} is set. | |
| 814 | *
Will default to {@code application/octet-stream}.
 | |
| 815 | * @param contentType the new content type | |
| 816 | * @return this KeyVal | |
| 817 | */ | |
| 818 | KeyVal contentType(String contentType); | |
| 819 | ||
| 820 | /** | |
| 821 | * Get the current Content Type, or {@code null} if not set. | |
| 822 | * @return the current Content Type. | |
| 823 | */ | |
| 824 | String contentType(); | |
| 825 | } | |
| 826 | } | |
Mutations | ||
| 47 |
1.1 |


Simple Widget Mapper Example
The QDataWidgetMapper class allows information obtained from a model to be viewed and edited in a collection of widgets instead of in an item view. Any model derived from QAbstractItemModel can be used as the source of data and almost any input widget can be used to display it.
The example itself is very simple: we create Window
, a QWidget subclass that we use to hold the widgets used to present the data, and show it. The Window
class will provide buttons that the user can click to show different records from the model.
Window Class Definition
The class provides a constructor, a slot to keep the buttons up to date, and a private function to set up the model:
class Window : public QWidget { Q_OBJECT public: Window(QWidget *parent = 0); private slots: void updateButtons(int row); private: void setupModel(); QLabel *nameLabel; QLabel *addressLabel; QLabel *ageLabel; QLineEdit *nameEdit; QTextEdit *addressEdit; QSpinBox *ageSpinBox; QPushButton *nextButton; QPushButton *previousButton; QStandardItemModel *model; QDataWidgetMapper *mapper; };
In addition to the QDataWidgetMapper object and the controls used to make up the user interface, we use a QStandardItemModel to hold our data. We could use a custom model, but this standard implementation is sufficient for our purposes.
Window Class Implementation
The constructor of the Window
class can be explained in three parts. In the first part, we set up the widgets used for the user interface:
Window::Window(QWidget *parent) : QWidget(parent) { setupModel(); nameLabel = new QLabel(tr("Na&me:")); nameEdit = new QLineEdit(); addressLabel = new QLabel(tr("&Address:")); addressEdit = new QTextEdit(); ageLabel = new QLabel(tr("A&ge (in years):")); ageSpinBox = new QSpinBox(); nextButton = new QPushButton(tr("&Next")); previousButton = new QPushButton(tr("&Previous")); nameLabel->setBuddy(nameEdit); addressLabel->setBuddy(addressEdit); ageLabel->setBuddy(ageSpinBox);
We also set up the buddy relationships between various labels and the corresponding input widgets.
Next, we set up the widget mapper, relating each input widget to a column in the model specified by the call to setModel():
mapper = new QDataWidgetMapper(this); mapper->setModel(model); mapper->addMapping(nameEdit, 0); mapper->addMapping(addressEdit, 1); mapper->addMapping(ageSpinBox, 2); connect(previousButton, &QAbstractButton::clicked, mapper, &QDataWidgetMapper::toPrevious); connect(nextButton, &QAbstractButton::clicked, mapper, &QDataWidgetMapper::toNext); connect(mapper, &QDataWidgetMapper::currentIndexChanged, this, &Window::updateButtons);
We also connect the mapper to the Next and Previous buttons via its toNext() and toPrevious() slots. The mapper's currentIndexChanged() signal is connected to the updateButtons()
slot in the window which we'll show later.
In the final part of the constructor, we set up the layout, placing each of the widgets in a grid (we could also use a QFormLayout for this):
QGridLayout *layout = new QGridLayout(); layout->addWidget(nameLabel, 0, 0, 1, 1); layout->addWidget(nameEdit, 0, 1, 1, 1); layout->addWidget(previousButton, 0, 2, 1, 1); layout->addWidget(addressLabel, 1, 0, 1, 1); layout->addWidget(addressEdit, 1, 1, 2, 1); layout->addWidget(nextButton, 1, 2, 1, 1); layout->addWidget(ageLabel, 3, 0, 1, 1); layout->addWidget(ageSpinBox, 3, 1, 1, 1); setLayout(layout); setWindowTitle(tr("Simple Widget Mapper")); mapper->toFirst(); }
Lastly, we set the window title and initialize the mapper by setting it to refer to the first row in the model.
The model is initialized in the window's setupModel()
function. Here, we create a standard model with 5 rows and 3 columns, and we insert some sample names, addresses and ages into each row:
void Window::setupModel() { model = new QStandardItemModel(5, 3, this); QStringList names; names << "Alice" << "Bob" << "Carol" << "Donald" << "Emma"; QStringList addresses; addresses << "<qt>123 Main Street
Market Town</qt>" << "<qt>PO Box 32
Mail Handling Service" "
Service City</qt>" << "<qt>The Lighthouse
Remote Island</qt>" << "<qt>47338 Park Avenue
Big City</qt>" << "<qt>Research Station
Base Camp
Big Mountain</qt>"; QStringList ages; ages << "20" << "31" << "32" << "19" << "26"; for (int row = 0; row < 5; ++row) { QStandardItem *item = new QStandardItem(names[row]); model->setItem(row, 0, item); item = new QStandardItem(addresses[row]); model->setItem(row, 1, item); item = new QStandardItem(ages[row]); model->setItem(row, 2, item); } }
As a result, each row can be treated like a record in a database, and the widget mapper will read the data from each row, using the column numbers specified earlier to access the correct data for each widget. This is shown in the following diagram:
Since the user can navigate using the buttons in the user interface, the example is fully-functional at this point, but to make it a bit more user-friendly, we implement the updateButtons()
slot to show when the user is viewing the first or last records:
void Window::updateButtons(int row) { previousButton->setEnabled(row > 0); nextButton->setEnabled(row < model->rowCount() - 1); }
If the mapper is referring to the first row in the model, the Previous button is disabled. Similarly, the Next button is disabled if the mapper reaches the last row in the model.
More Complex Mappings
The QDataWidgetMapper class makes it easy to relate information from a model to widgets in a user interface. However, it is sometimes necessary to use input widgets which offer choices to the user, such as QComboBox, in conjunction with a widget mapper.
In these situations, although the mapping to input widgets remains simple, more work needs to be done to expose additional data to the widget mapper. This is covered by the Combo Widget Mapper and SQL Widget Mapper examples.
Files:


DNS Resolver
Switch Theme
Enter hostname to resolve
Hostname :
Resolve
Results for hostname :
Record Type
Value
An error occured while retrieving the records. Please try again.


{{ post.title }}
{{ post.date | date_to_string }}{{ post.excerpt }}
--- layout: default title: Ayo Isaiah ---
I'm a self-taught Front-End Developer living in Lagos, Nigeria and I'm currently learning Full-Stack JavaScript through Free Code Camp.
{{ post.excerpt }}


@* * This template takes a single argument, a String containing a * message to display. *@ @(message: String) @* * Call the the `main` template with two arguments. The first * argument is a `String` with the title of the page, the second * argument is an `Html` object containing the body of the page. *@ @main("Welcome to Play") { @bubbles("") @index("")
Bjergsen began his professional League of Legends career at a very young age, and so during the Season 3 European LCS, he was unable to play with his team Copenhagen Wolves until the third week of the spring split due to age restrictions put in place by Riot Games. For the first two weeks, he was temporarily replaced by the team's sub cowTard. After he turned 17 years old on February 21st, he was able to rejoin the main lineup and play their remaining LCS matches. At the end of the spring split, he joined the rest of the Copenhagen Wolves starting lineup in moving to the organization Ninjas in Pyjamas, where he played in the summer split.
On November 2nd, 2013, Bjergsen left NiP to move to NA and join the Team SoloMid starting lineup as their mid laner, replacing Reginald and becoming the second player to move from the European LCS to play in the North American LCS after Edward left Gambit to join Curse during Season 3. Bjergsen debuted at the Battle of the Atlantic, where TSM played against Lemondogs. They won their series 2-0, and North America beat Europe in combined score. On January 23rd, 2014, Bjergsen received a competitive ruling for having violated the LCS rules by approaching and encouraging a contracted LCS player to leave his position at Lemondogs. He admitted to having committed the violation and was fined $2,000.
TSM's spring split went better than their season 3 summer split had, and they ended the round robin with a 22-6 record - just two games behind Cloud9. However, once again they found themselves lacking in the finals of the playoffs, losing to Cloud9 in another 3-0 series. With TheOddOne retiring and Xpecial replaced by Gleeb going into the summer split, TSM struggled early on but started to rebound with the addition of Korean import Lustboy replacing Gleeb. They accomplished what they hadn't been able to since Cloud9's entry to the LCS, and won the playoffs with a 3-2 victory over their rivals. TSM once again received North America's top seed to the World Championship, and they placed second in their group, behind Star Horn Royal Club and ahead of SK Gaming and Taipei Assassins. It was the first time that TSM with Dyrus had advanced past their initial seeding location at a World Championship, though they lost in the quarterfinals to eventual tournament winners Samsung White.
TSM began the 2015 Spring Split with an 8-2 record after five weeks, holding first place during every week after the first. By virtue of their standing after the fifth week of the split, TSM was invited to the IEM Season IX World Championship. There, they defeated Team WE, CJ Entus (marking their first tournament win over a Korean team), and the yoe Flash Wolves to advance to the finals of the event, where they swept Team WE 3-0 to win the title. Though TSM themselves did not play against the GE Tigers at all (then undefeated in the LCK), or against any Korean team in a multi-game series, they still made history by being the first North American team to win an international event with Korean teams present since Chicks Dig ELO at the 2011 World Cyber Games and the first Western team to do so since Gambit Gaming at IEM Katowice in 2013. Bjergsen won the title of MVP for the event.
TSM finished the spring season with a 13-5 record, giving them the top seed into the playoffs. After defeating Team Impulse and then Cloud9, TSM won their third North American championship, tying Cloud9's record of most North American LCS championships won to date. Their victory also gave them the North American seed to the 2015 Mid-Season Invitational, where they looked to replicate their IEM success. However, the team underperformed in the group stage, winning only their match against wild card Beşiktaş and not qualifying for playoffs.
In the summer split of LCS, TSM started relatively strong, sitting at a 8-2 record at the end of week 5. However, they fell to fifth place by week 9, their lowest regular-season placement to date. In the playoffs, TSM beat Gravity Gaming and Team Liquid in the first two rounds, winning both series 3-1. In the finals, held at Madison Square Garden in New York City, they faced off against long-time rivals CLG and lost in a convincing 3-0 series. TSM had already qualified for Worlds after their semifinal win due to their Championship Points from the spring split, and they ended up with the second seed from North America.
TSM were drawn into Group D, which instantly became known as the "Group of Death" or the "Group of TSM's Death" due to LGD Gaming and KT Rolster being favorites to win it; Origen was the last team drawn in. LGD massively underperformed expectations, however, and TSM took a game off them in the first round robin. However, at the same time Origen overperformed, and ultimately KT Rolster and Origen made it out of groups; TSM lost their second game against LGD and ended up in last place with a 1-5 record.


Bitcoin Futures: Institutional BTC Longs on the Rise; Price Breakout Soon?
by Matthew HronesSeveral bitcoin investment platforms for institutional players have been gaining popularity over the past few months. Does this point to a possible BTC price breakout coming in the next few weeks? Let’s see.
Bakkt Recovering From Slow Start
The launch of Bakkt, the first federally regulated bitcoin futures exchange, got off to a rocky start last month after roughly a year of ensuring compliance with US laws and regulations. The first few days of their launch were unimpressive, to say the least, with extremely low volume on the first day slowly picking up over the next week. The disappointing launch also had a negative impact on BTC’s market price, which saw a drop of over 10% in the following days.
However, the volume has been increasing significantly in the month since Bakkt’s launch. The first few days averaged less than $1M in trading volume. However, at the end of October bitcoin futures volume had increased five times. In addition, open interest statistics have been rising exponentially in the past two weeks.
Institutional Investors betting on Bitcoin Price Rise
The increasing futures trading volume is absolutely a good sign for bitcoin investors. However, it isn’t the only metric that is pointing to a price increase. Another notable futures platform, hosted by the Chicago Mercantile Exchange, has seen a large increase in long positions on the BTC futures market.
With futures markets, investors especially institutional participants can use their money to make predictions on the direction of an asset’s price. It’s known as a contract. If an investor believes the price will decrease over a given time period, they take what is called a “short position.” If they believe the price will increase, they take out what is called a “long position.”
Depending on what the price does during the time period, the contract will result in the investor making money or losing money.
After a few months of stagnation and a large dip at the beginning of the month, CME has finally found some consistent increase in the open interest in institutional bitcoin long positions. As the total approaches 1.5K BTC, some analysts are predicting that we could see a breakout to even higher numbers.
Where do you see the Bitcoin price going in the short term? Do you think that institutional investors will play a part in affecting the market price? Let us know your thoughts in the comments down below!
Images courtesy of Skew.com, Bitcoinist Media Library
The Rundown


class: center, middle # Encoding Models for Higher Visual Features *Jonas Kubilius and Drew Linsley* KU Leuven (Belgium) / Boston College (USA) CBMM summer school / 2015-09-02 .license[
.logo[] .logo-name[[klab.lt](http://klab.lt)] ] .aside[except where otherwise noted, these slides are available under the Creative Commons Attribution 4.0 International License] ??? --- layout: true class: middle --- ## "Gallant" for higher visual features - Encoding models! - "Massive and unconstrained" data --- class: center ## Encoding models .full[![](img/models.png)] --- class: center ## Encoding models .full[![](img/models_preds.png)] --- class: center ## Tuning properties in rSTS ![](img/tuning.png) --- class: center ## Decoding styles from rSTS .full[![](img/decoding_short.png)] .source[Home Alone 2 frames used under the fair use terms] --- ## Observations - Visual style captures STS activity - Fine-tuning for a particular task can account for fMRI data --- # Thank you! --- class: center ## Predictability .full[![](img/preds.png)] --- class: center ## Style predictability .full[![](img/preds_rois.png)]


The first few items will contain instructions like this, in green italics.
After that, you'll be on your own.
You will read a number of (fragments of) texts, ask questions about them, and look for answers.
Each text fragment is revealed piece by piece. Please read each new piece carefully:
You can highlight at most ten words; choose the most important part.
The new piece of text may (or may not) contain information that helps answer questions you entered before. This is what we are interested in.
You entered the following question:
▶ Was that question answered in the new piece of text?
As before, we are interested in your subjective assessment.
▶ Enter the (complete/partial) answer in your own words:
This item applies only if your question was at least somewhat answered (3 or higher).
Please try to use correct grammar and spelling, and prefer full sentences over single words.
▶ In the new piece of text, highlight the main word or short phrase suggesting this answer.
*
Highlighting works only if your question was at least somewhat answered (3 or higher).
You highlight text by cursor selection: click-and-drag on the text.
A question can be answered by a single word, by a phrase or by a whole sentence.
Highlight the words that you find most clearly provide the answer.
You can highlight text only in the newest piece of text.
If you made a mistake and your question was in fact already answered by an earlier excerpt, click 1 or 2 above.
Again, you can change your responses above as much as you like.
Click below when you are satisfied.
That will reveal a new piece of the text.


I. Overview
Communicating secretly in writing(Secret Writing) is probably as old as writing itself. Already the Egyptians are known to have included secret hieroglyphs in their writing. In ancient times secret writing has mainly been used for religious purposes and mysticism. In the classical antiquity are the first accounts of secret writing being used for military purposes by the ancient Greeks. From there on the ability to secretly pass messages was a major factor for military and diplomatic communication. It is therefore little surprising that many of the techniques for secret communication known today have been developed by government agencies and often only made known to the public long after their invention. Since the ancient Greeks many methods of exchanging secret messages have been developed (and successfully broken).
The Science of Secret Writing can be roughly divided into the following branches:
| Secret Writing | Steganography(Hiding Messages) | ||
| Cryptography(Scrambling Messages) | Substitution#1 | Code#3 | |
| Cipher#4 | |||
| Transposition#2 |
#1:encrypt messages by replacing the components of a message.
#2:encrypt messages by permuting the components of a message within itself.
#3:algorithms that substitute entire words or phrases of a message.
#4:algorithms that substitute the single letters or characters of a message.
We can describe the process of sending encrypted messages with the following schematic view:
Plaintext ——> Cipher-/Codetext ——> Decryption ——> Orig. Plaintext
From a practical point of view, codes are relatively useless as they require far too much overhead to be effective. In theory, one would have to design an entire dictionary of code words before commencing communication. Obviously, this makes it not only difficult to work with a code, but also insecure as a code book can not easily be hidden or memorised, as well as very costly to change a code. While codes have a certain usefulness for ad hoc communication, they are not relevant for the type of efficient cryptography we are interested in.
With ciphers on the other hand one only has to know how to encipher and decipher the basic set of symbols, for example the 26 letters of the alphabet. Therefore, ciphers are far easier to apply, to keep secret and to change in order to guarantee prolonged secure communication.


{% include head.html %}
{% include navbar.html %}To let the Select2 widget know if any elements are directly being appended, prepended or both in the context of a Bootstrap Input Group, add .select2-bootstrap-prepend
and/or .select2-bootstrap-append
to the .input-group
wrapper element to address Select2's corresponding border-radii.
The theme offers styles to display "small" and "large" Select2 widgets in Bootstrap Input Groups with Bootstrap Control Sizing classes applied (e. g. Select2 in .input-group.input-group-sm
or .input-group.input-group-lg
). You may also apply the Bootstrap Control Sizing classes directly to the .select2-container
to alter its appearance.
While .select2-container--bootstrap.input-sm
and .select2-container--bootstrap.input-lg
work as advertised, Select2 4 currently does not offer copying CSS classes from the original <select>
element in an easy way like version 3.x did.
Click the button for a demo setting the required classes on .select2-container--bootstrap
:
The theme's styles work in Bootstrap's Horizontal Forms and offers support for Horizontal Form Group Sizes, too.
Tests for Select2 widgets used in context with Bootstrap's Button Addons.
The theme applies Bootstrap's styles for disabled input elements and for disabled dropdown options to the Select2 widgets and its options. Also see Select2's documentation on its "Disabled mode".


PERLVOS
Section: Perl Programmers Reference Guide (1)Updated: 2009-02-12
Index Return to Main Contents
NAME
README.vos - Perl for Stratus VOSSYNOPSIS
This file contains notes for building perl on the Stratus VOS operating system. Perl is a scripting or macro language that is popular on many systems. See perlbook for a number of good books on Perl.These are instructions for building Perl from source. Most people can simply download a pre-compiled distribution from the VOS anonymous FTP site. This version of Perl is not supported on VOS Release 14.2.0 or earlier releases. If you are running VOS Release 14.3.0 or later, download Perl from ftp://ftp.stratus.com/pub/vos/posix/ga/ga.html. Instructions for unbundling the Perl distribution file are at ftp://ftp.stratus.com/pub/vos/utility/utility.html.
If you are running VOS Release 14.4.1 or later, you can obtain a pre-compiled, supported copy of perl by purchasing Release 2.0.1 (or later) of the VOS GNU C/C++ and GNU Tools product from Stratus Technologies.
BUILDING PERL FOR VOS
To build perl from its source code on the Stratus Continuum platform, you must be have VOS Release 14.5.0 or later, the STCP product, and the GNU C/C++ and GNU Tools, Release 2.0.1 or later. On the V Series platform you must have VOS Release 15.0.0 or later, and any version of the GNU C/C++ and GNU Tools product.To build full perl using the supplied Configure script and makefiles, change to the ``vos'' subdirectory and type the command ``compile_full_perl'' or ``start_process compile_full_perl''. This will configure, build, and test perl.
INSTALLING PERL IN VOS
- 1.
-
If you have built perl using the Configure script, ensure that
you have modify and default write permission to ">system>ported" and all subdirectories. Then type
gmake install
- 2.
-
While there are currently no architecture-specific
extensions or modules distributed with perl, the following
directories can be used to hold such files:
>system>ported>lib>perl5>5.9.0>7100 >system>ported>lib>perl5>5.9.0>8000 >system>ported>lib>perl5>5.9.0>i786
- 3.
-
Site-specific perl extensions and modules can be installed in one of
two places. Put architecture-independent files into:
>system>ported>lib>perl5>site_perl>5.9.0
Put site-specific architecture-dependent files into one of the following directories:
>system>ported>lib>perl5>site_perl>5.9.0>7100 >system>ported>lib>perl5>site_perl>5.9.0>8000 >system>ported>lib>perl5>site_perl>5.9.0>i786
- 4.
- You can examine the @INC variable from within a perl program to see the order in which Perl searches these directories.
USING PERL IN VOS
Restrictions of Perl on VOS
This port of Perl version 5 to VOS prefers Unix-style, slash-separated pathnames over VOS-style greater-than-separated pathnames. VOS-style pathnames should work in most contexts, but if you have trouble, replace all greater-than characters by slash characters. Because the slash character is used as a pathname delimiter, Perl cannot process VOS pathnames containing a slash character in a directory or file name; these must be renamed.This port of Perl also uses Unix-epoch date values internally. As long as you are dealing with ASCII character string representations of dates, this should not be an issue. The supported epoch is January 1, 1980 to January 17, 2038.
See the file pod/perlport.pod for more information about the VOS port of Perl.
Handling of underflow and overflow
Prior to VOS Release 14.7.0, VOS does not support automatically mapping overflowed floating-point values to +infinity, nor automatically mapping underflowed floating-point values to zero, unlike many other platforms. The Perl pack function has been modified to perform such mapping in software on VOS. Performing other floating-point computations that underflow or overflow will probably result in SIGFPE. Don't push your luck.As of VOS Release 14.7.0, the VOS POSIX runtime sets up the PA-RISC and IA-32 hardware floating-point status register so that the overflow and underflow exceptions do not trap, but instead automatically convert the result to infinity or zero, as appropriate. As of this writing, there are still floating-point operations that can trap, for example, subtracting two infinite values. This is recorded as suggestion posix-1022, which has been fixed in VOS Release 15.2 and higher.
TEST STATUS
When Perl 5.9.0 is built using the native build process on VOS Release 14.7.0 and GNU C++/GNU Tools 2.0.2a, all but nine attempted tests either pass or result in TODO (ignored) failures. The tests that fail are:t/io/dup, test 2 t/io/tell, test 28 t/op/pack, test 0 ext/B/t/bytecode, test 1 ext/Devel/Peek/t/Peek, test 1 ext/Encode/t/enc_module, test 1 ext/IO/t/io_dup, test 2 lib/ExtUtils/t/MM_Unix, test 94 lib/Net/ing/t/450_service, test 8
SUPPORT STATUS
I'm offering this port ``as is''. You can ask me questions, but I can't guarantee I'll be able to answer them. There are some excellent books available on the Perl language; consult a book seller.If you want a supported version of perl for VOS, purchase the VOS GNU C/C++ and GNU Tools Release 2.0.1 (or later) product from Stratus Technologies, along with a support contract (or from anyone else who will sell you support).
AUTHOR
Paul Green (Paul.Green@stratus.com)LAST UPDATE
February 7, 2008
Index
- NAME
- SYNOPSIS
- BUILDING PERL FOR VOS
- INSTALLING PERL IN VOS
- USING PERL IN VOS
- TEST STATUS
- SUPPORT STATUS
- AUTHOR
- LAST UPDATE
This document was created by man2html, using the manual pages.
Time: 05:29:09 GMT, December 24, 2015


The Declarative Content API allows you to show your extension's $(ref:pageAction page action) depending on the URL of a web page and the CSS selectors its content matches, without needing to take a host permission or inject a content script. Use the activeTab permission in order to be able to interact with a page after the user clicks on your page action.
If you need more precise control over when your page action appears or you need to change its appearance to match the current tab before the user clicks on it, you'll have to keep using the $(ref:pageAction) API.
As a declarative API, this
API lets you register rules on the
$(ref:onPageChanged)
$(ref:events.Event event) object which take an
action ($(ref:ShowPageAction)
and $(ref:SetIcon)
) when
a set of conditions, represented as a
$(ref:PageStateMatcher)
, are met.
The $(ref:PageStateMatcher)
matches web pages if and only
if all listed criteria are met. The following rule would show a page
action for pages on https://www.google.com/
when a
password field is present on it:
var rule1 = { conditions: [ new $(ref:PageStateMatcher chrome.declarativeContent.PageStateMatcher)({ $(ref:PageStateMatcher.pageUrl pageUrl): { $(ref:events.UrlFilter.hostEquals hostEquals): 'www.google.com', $(ref:events.UrlFilter.schemes schemes): ['https'] }, $(ref:PageStateMatcher.css css): ["input[type='password']"] }) ], actions: [ new $(ref:ShowPageAction chrome.declarativeContent.ShowPageAction)() ] };
Note: All conditions and actions are created via a constructor as shown in the example above.
In order to also show a page action for sites with a video, you can add a second condition, as each condition is sufficient to trigger all specified actions:
var rule2 = { conditions: [ new $(ref:PageStateMatcher chrome.declarativeContent.PageStateMatcher)({ $(ref:PageStateMatcher.pageUrl pageUrl): { $(ref:events.UrlFilter.hostEquals hostEquals): 'www.google.com', $(ref:events.UrlFilter.schemes schemes): ['https'] }, $(ref:PageStateMatcher.css css): ["input[type='password']"] }), new $(ref:PageStateMatcher chrome.declarativeContent.PageStateMatcher)({ $(ref:PageStateMatcher.css css): ["video"] }) ], actions: [ new $(ref:ShowPageAction chrome.declarativeContent.ShowPageAction)() ] };
Added rules are saved across browser restarts, so register them as follows:
$(ref:runtime.onInstalled chrome.runtime.onInstalled).addListener(function(details) { $(ref:onPageChanged chrome.declarativeContent.onPageChanged).removeRules(undefined, function() { $(ref:onPageChanged chrome.declarativeContent.onPageChanged).addRules([rule2]); }); });
Note: You should always register or unregister rules in bulk rather than individually because each of these operations recreates internal data structures. This re-creation is computationally expensive but facilitates a faster matching algorithm.
Combine the above rule with the activeTab permission to create an extension that doesn't need any install-time permissions but can invite the user to click its page action on relevant pages and can run on those pages when the user clicks the page action.
$(ref:PageStateMatcher.css) conditions must be
compound selectors,
meaning that you can't
include combinators
like whitespace or ">
" in your selectors. This helps Chrome
match the selectors more efficiently.
| Compound Selectors (OK) | Complex Selectors (Not OK) |
|---|---|
a | div p |
iframe.special[src^='http'] | p>span.highlight |
ns|* | p + ol |
#abcd:checked | p::first-line |
CSS conditions only match displayed elements: if an element that matches your
selector is display:none
or one of its parent elements
is display:none
, it doesn't cause the condition to match. Elements
styled with visibility:hidden
, positioned off-screen, or hidden by
other elements can still make your condition match.
The $(ref:PageStateMatcher.isBookmarked) condition allows matching of the bookmarked state of the current URL in the user's profile. To make use of this condition the "bookmarks" permission must be declared in the extension manifest


|
Note: According to DP2P terms of use, the buyer and the seller are
solely responsible for making sure that the payment is accurate. Deriv is not
liable in any way to make corrections or compensations for any incorrect payment
made by the buyer, including but not limited to overpayment and underpayment.
|


I dont have an accountSign Up
I have an account Login
Your looking for your dream car or interested in selling your car AutoMart is the place
Toyota Premio
Ush 1,800,000
Subaru Forester
Ush 2,800,000
LandCrusier v8
Ush 4,800,000


Allows a user to run specific tools and programs with different permissions than the user's current logon provides.
Runas is a command-line tool that is built into Windows Vista. To use runas at the command line, open a command prompt, type runas with the appropriate parameters, and then press ENTER.
In the user interface for Windows Vista, the Run as… command has been changed to Run as administrator. However, you should rarely have to use the Run as administrator command because Windows Vista will automatically prompt you for an administrator password when it is needed.
For examples of how this command can be used, see Examples.
Syntax
runas [{/profile | /noprofile}] [/env] [{/netonly | /savecred}] [/smartcard] [/showtrustlevels] [/trustlevel] /user:<UserAccountName> "<ProgramName> <PathToProgramFile>"
Parameters
Parameter Description
/profile Loads the user's profile. This is the default. This parameter cannot be used with the /netonly parameter.
/no profile Specifies that the user's profile is not to be loaded. This allows the application to load more quickly, but it can also cause a malfunction in some applications.
/env Specifies that the current network environment be used instead of the user's local environment.
/netonly Indicates that the user information specified is for remote access only. This parameter cannot be used with the /profile parameter.
/savecred Indicates if the credentials have been previously saved by this user. This parameter is not available and will be ignored on Windows Vista Home or Windows Vista Starter Editions. This parameter cannot be used with the /smartcard parameter.
/smartcard Indicates whether the credentials are to be supplied from a smartcard. This parameter cannot be used with the /savecred parameter.
/showtrustlevels Displays the trust levels that can be used as arguments to /trustlevel.
/trustlevel Specifies the level of authorization at which the application is to run. Use /showtrustlevels to see the trust levels available.
/user:<UserAccountName> "<ProgramName> <PathToProgramFile>"
Specifies the name of the user account under which to run the program, the program name, and the path to the program file. The user account name format should be <User>@<Domain> or <Domain>\<UserAccountName>.
/? Displays help at the command prompt.


acpi_listen(8) acpi_listen(8) NAME acpi_listen - ACPI event listener SYNOPSIS acpi_listen [options] DESCRIPTION acpid is the system-wide ACPI event catcher. acpi_listen is a simple shell-friendly tool which connects to acpid and listens for events. When an event occurs, acpi_listen will print it on stdout. OPTIONS -c, --count events Receive up to a maximum number of ACPI events, then exit. -s, --socketfile filename This option changes the name of the UNIX domain socket which acpid opens. Default is /var/run/acpid.socket. -t, --time seconds Listen for the specified time in seconds, before exiting. -v, --version Print version information and exit. -h, --help Show help and exit. FILES /var/run/acpid.socket BUGS There are no known bugs. To file bug reports, see AUTHORS below. SEE ALSO acpid(8) AUTHORS Ted Felix (www.tedfelix.com) Tim Hockin<EMAIL_ADDRESS>Luca Capello<EMAIL_ADDRESS>Nov 2003 acpi_listen(8)


Student Globe
Home
About
Forum
Events
Clubs & Socs.
Quiz
Weekly Quiz
Quiz Game
What do you call a time span of one thousand years ?
Infinity.
Millennium.
Gundogan.
Oblivion.
Who is the only player to win back-to-back trebles (domestic title, domestic cup and Champions League) in European club football?
Alexander Pato
CR'7
Roberto Firmino
Samuel Eto'o
Roberto Carlos
Pick the four main human blood groups?
A,E,IO and U.
J,A,Y and Z.
AA,BB,CC and DD.
A, B, AB and O.
What is the average temperature of the human body, in degrees centigrade?
50.
1000.
37.
100.
Which fictional character lived at 221b Baker Street?
Sherlock Holmes.
Inspector Gadget.
House.
Columbo.
True or False, The highest scoring match footbal matvh ever recorded was 149-0?
False
True
True or False, In Greek mythology, the fire stole for mankind's benefit Prometheus?
True
False
Which branch of mathematics deals with the sides and angles of triangles, and their relationship to each other ?
Algabra.
Matrix.
Trigonometry.
Pie.
Which field of artistry did Louis Daguerre develop?
Musical Theater.
Museums.
Dance.
Photography.
The correct answer will display here


Before we started you should have read Create Project.
Here we only show the difference.
set PROJECT_NAME=SimpleGame
set COCOS2D_DIR=d:\cocos2dx-win8
set PROJECT_DIR=d:\Projects\SimpleGame
Select the project "Helloworld", press f12 to rename it to "SimpleGame"


Our amazing team
We are a team like suicide squad not avengers.
Raja Varma
Web Applications Developer
Just started by web development career and long way to go.
V Sasidhar Reddy
Web developer
Just started my web developer career and long way to go.
M Sai Sahil
Photograpy and editing
I started my Photograpy and editing career from the university days in clubs and have worked with many startups.
Y Rajesh Naidu
Marker Analayst
I have 2 year of experience as market analayst and worked with many startups.
R Hemanth
Web Applications Developer
Just started by web development career and long way to go.
K Tejesh
Web developer
Just started my web developer career and long way to go.
P Yogesh Reddy
Photograpy and editing
I started my Photograpy and editing career from the university days in clubs and have worked with many startups.
K Raghu Yadav
Marker Analayst
I have 2 year of experience as market analayst and worked with many startups.


< img class="arrow1" src="/static/headline/img/shoot/arrow1.png" alt="">
< img class="arrow1" src="/static/headline/img/shoot/arrow2.png" alt="">
< img class="arrow1" src="/static/headline/img/shoot/arrow3.png" alt="">


"(re)Collect (re)Create Bisbee" Would Like to Use Your Location
You've discovered a vintage Bisbee photograph!


--- layout: post title: Vimeo Vs. YouTube for Technical Videos date: '2011-11-16T10:01:00-06:00' tags: - vimeo - youtube - video - screencast - video - teaching permalink: /post/12882226688/vimeo-vs-youtube-for-technical-videos ---
Congrats, you did a killer presentation or screencast, now you want to upload it to the interwebs and share with the world, but what service should you use? I’ve used both YouTube and Vimeo and wanted to compare and contrast the two.
I love the look and feel of Vimeo, it appeals to my tastes, and feels like a crafted app versus a video marketplace. It embeds well in my blog, and until recently was the only way to upload very long videos to the web for free (YouTube now allows authorized accounts to do this too). While YouTube looks much better now, it’s no match for Vimeo
Once the video is uploaded it can take quite awhile to process on both services. While you are waiting YouTube allows you to access the embed code, while Vimeo makes you wait. This is nice to queue up a blog post without having to wait for the video to finish processing.  Vimeo also sends you an email when your video is done processing, another plus.
In my informal speed tests YouTube was faster at uploading and processing videos. While uploading the video below, YouTube won by a few minutes. Your mileage may vary.
Here is the exact same video uploaded to both services, which do you prefer?
Both services allow for discovery and exploration, Vimeo has <3’s and YouTube has thumbs up. I’m not sure either service does a great job of exploration, the majority of traffic to any of my videos comes from people linking to it, or from my hosting it on my blog. So don’t expect any content you put on either service to suddenly take off without some work from you.
YouTube wins this one hands down, quite a few services will expand youtube links into the actual video, including Propane the Mac client for Campfire and Facebook. While Vimeo link-embedding exists in many services, it tends to be ignored by the smaller players.
Vimeo looks better, YouTube has a lot of UX polish, and seems to be faster at processing videos. While I’ve used Vimeo heavily in the past, I plan on using YouTube a bit more in the future, if i left any important details off, let me know in the comments or on twitter @schneems


Nickster's Final Halo CE Release
Nickster's Final Relase
This is the website where you can find all of the projects that
ODST Nick / ODST_Nick / Nickster5000 has ever made for Halo Custom Edition.
Many of these projects have not been seen before, so everyone has access for it.
LUA Development
GTA_Halo - [ACTIVELY WIP] Source for the mod will be available on GitHub around August 2019.
Multiteam Bipeds - Allows server host to specify different bipeds and FP hands for red team and blue team.
Single Players / Firefights
-Operation Coldcoast - Deploy on the coast of Relay Station Zulu, and take it back from the covenant.
-Scarab Test - Scarab spins in circle, tracking player and his movements.
-Project Zulu: Prototypes (includes 3 maps)
Sector 09:
-Playable maps: V1 (The long fight-to-the-top version), V2, V3, and the final version
-Scripts: All scripts used in firefight.
-Source: All 3DS and other RAW files before compilation.
Multiplayer Maps / Role Playing maps
-RPG_PZ - Map contains miscellaneous halo reach ports done by Nickster.
-RPG_Wilderness (W/ Halo wars base and other stuff) - Custom RP map that was being worked on.
-Twisted Metal maps - Deathmatch using ruthless killing machines.
-Polyonymous Multiplayer map blockout
-RPG_Zulu_Final - An arctic role playing map. Contains many BSP iterations.
-Salvation: A mod made for terminator event.
-Celer Exile ODST V3: Final version of Celer Exile Role Playing map.
Playground
Invasion - First part of a three-part invasion map that was planned.
Tags / Stuff that never made it ingame
-Rammstein Stuff
-Eternal - Source Material
-Misc 3D Models: A bunch of 3D Models
-Ships - Includes a Battleship, Prowler, Frigate, Cruiser, Super Cruiser, and Halberd Class destroyer
-Cars (Ingamed versions, and versions rigged up) - Includes a lamborgini aventador and more cool cars.
-This includes all Fast & Furious related vehicles & minigun mounted vehicles


{{ page.title }}
-
{% for tag in page.tags %}
- {{ tag }} {% unless forloop.last %}{% endunless %} {% endfor %}
Mislav Javor
I'm an entrepreneur and a software developer. CEO of a blockchain startup aiming to simplify buying and selling of electricity. Actively participating in the proliferation of healthy (technology oriented) blockchain culture. Organizer of Blockchain Development Meetup Zagreb, lectured at HUB385 Academy and University of Osijek on topics of smart comtract development. In my free time, I'm a singer and a guitar/piano player. Contact at<EMAIL_ADDRESS>me on Twitter
{% if page.comments != false and site.disqus.id %}
{% include disqus.html %}
{% endif %}


Class: c3.Plot.Zoomable
| Defined in: | js/c3-plot.coffee |
| Inherits: | c3.Plot |
Overview
A type of plot that allows panning and zooming.
You cannot currently zoom with an ordinal scale.
External Interface
In addition to the standard {c3.base c3 interface}, this chart adds:
- focus() - Zoom the chart to the specified domain. Will not fire zoom events.
Events
- zoom - Triggered when the user starts to zoom or pan. Passed with the current focus domain.
- zoomend - Triggered when the user finishes zooming or panning. Passed with the focus domain.
Extensibility
The h scale will adjust it's domain based on the current focus of the chart. The original domain can be retreived using the _origh scale.
Variables Summary
- version =
-
0.0
- type =
-
'zoomable'
- snap_to_all =
-
0.01
[Number] A ratio threshold. If the focus domain is within this threshold near both edges, then the chart will snap to the full domain.
- zoom_extent =
-
undefined
[Number, String] The maximum zoom factor the user is allowed to zoom in If set to integer then allow zooming only until pixels are integer values.
Variable inherited from c3.Plot
version type layers axes data h v x y h_domain v_domain margins crop_margins layer_options axis_options class options content_options anchor height width anchor_styles handlers
Instance Method Summary
- # (void) _init() Bound
- # (void) _size() Bound
- # (void) focus(extent) Bound Zoom to a specified focus domain, but only if the domain actually changes
- # (void) _draw(origin) Bound
Inherited Method Summary
Methods inherited from
c3.Plot
#_init #_size #_update #_draw #_style #scale #rescale #min_x #max_x #min_y #max_y #init #style #render #resize #redraw #restyle #_prep #size #update #draw
Instance Method Details
#
(void)
_init()
Bound
#
(void)
_size()
Bound
#
(void)
focus(extent)
Bound
Zoom to a specified focus domain, but only if the domain actually changes
#
(void)
_draw(origin)
Bound


My name is Kenol David, Jr. Please call me Ken. I'm a technology professional.
I have over a decade of experience helping top-tier companies in various industries to support and manage their information technology infrastructure and to define and create their products.
Currently, I'm freelancing/contracting and working on building KEDA Solutions, a full-service technology consulting and solutions firm.


Flightonight
Flightonight
Please enter 3-character city/airport codes, e.g., NYC or LGA.
Departure Time
Month
January
February
March
April
May
June
July
August
September
October
November
December
Date format DD
Year format YYYY
Return Time
Round Trip
Month
January
February
March
April
May
June
July
August
September
October
November
December
Please enter the maximun connecting time in hours.
Enter your email address for subscription.
Submit


Just fill in the form, generate a QR-code and choose "Scan QR-Code" from the repertoire app's menu on your smartphone.


Class to handle ROS parameter. More...
#include <stparameter.h>
Public Member Functions | |
| bool | connectAllCamera () |
| bool | connectFirstCameraOnly () |
| std::string | getCalibrationFile (const ros::NodeHandle &nh, std::string camera_namespace) |
| std::string | getNamespace (std::string camera_id) |
| void | loadCameraList (const ros::NodeHandle &nh, std::vector< std::string > &camera_to_connect) |
| StParameter () | |
| virtual | ~StParameter () |
Protected Attributes | |
| std::vector< std::string > | vec_camera_to_connect_ |
Class to handle ROS parameter.
This class reads camera list parameter and path of calibration file.
Definition at line 51 of file stparameter.h.
| stcamera::StParameter::StParameter | ( | ) |
Constructor.
Definition at line 35 of file stparameter.cpp.
|
virtual |
Destructor.
Definition at line 39 of file stparameter.cpp.
| bool stcamera::StParameter::connectAllCamera | ( | ) |
Check if the node shall connect to all detected camera.
This function checks if the node shall connect all detected camera.
Definition at line 95 of file stparameter.cpp.
| bool stcamera::StParameter::connectFirstCameraOnly | ( | ) |
Check if the node shall connect to only the first found camera.
This function checks if the node shall connect to only the first found camera.
Definition at line 90 of file stparameter.cpp.
| std::string stcamera::StParameter::getCalibrationFile | ( | const ros::NodeHandle & | nh, |
| std::string | camera_namespace | ||
| ) |
Get calibration file for the given camera.
This function will search for the calibration_file parameter for the given camera namespace. If such parameter does not exist, the value of the default_calibration_file parameter will be used. In case that the parameter also does not exist, empty string is returned.
| [in] | nh | Node handle of the camera. |
| [in] | camera_namespace | The camera namespace. |
Definition at line 67 of file stparameter.cpp.
| std::string stcamera::StParameter::getNamespace | ( | std::string | camera_id | ) |
Obtain the namespace of the given camera identifier.
This function replaces any puctuation in the given camera identifier, which can be in the form of camera ID or MODEL(SERIAL), with under- score '_', so that it complies with ROS namespace.
| [in] | camera_id | The camera identifier. |
Definition at line 105 of file stparameter.cpp.
| void stcamera::StParameter::loadCameraList | ( | const ros::NodeHandle & | nh, |
| std::vector< std::string > & | camera_to_connect | ||
| ) |
Load the camera list.
This function retrieves data from parameter camera_to_connect as a list of allowed camera to connect. The data is kept in variable vec_camera_to_connect_. If there is a special keyword 'all' among the data, the node will attempt to connect to any detected camera. If the parameter does not exist or there is no data, the node will only connect to the first found camera.
| [in] | nh | Node handle of the main node. |
| [out] | camera_to_connect | Store the retrieved data excluding the special keyword 'all'. |
Definition at line 43 of file stparameter.cpp.
|
protected |
Store the list of allowed camera to connect, including special key- word 'all' if specified.
Definition at line 124 of file stparameter.h.


Domínio personalizado
Hospedagem
Site Responsivo
Redes Sociais
Chat online
Blog Integrado
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
Alexandre Pateis
Construtora Minari
"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."
Julia Fernandes
Sada Siderurgia


TWO IF BY SEA A film review by Andrew Hicks Copyright 1996 Andrew Hicks / Fatboy Productions
** (out of four)
Two stars if mediocre, that's a rule of mine in movie reviewing and boy oh boy does it apply here. I like Denis Leary--his supporting rols in DEMOLITION MAN and JUDGMENT NIGHT complemented what were already good movies--but when he tries to carry a movie himself, as in THE REF, the results are a little less than ideal. He can only keep up the complain-about-everything motif for so long before it gets stale, and in TWO IF BY SEA he doesn't even give us that.
And Sandra Bullock I like too, but I still think she wasn't cut out for romantic comedies. She does about as well here as in WHILE YOU WERE SLEEPING, only here she plays the Jersey Jew stereotype, a Rhoda for the 90's. The thing is, Bullock is just too sweet and appealing to pull off a brash, abrasive character like that. She's the victim of miscasting here, in a role I'd saw was originally intended for Marisa Tomei. Again I say, Sandra, stick to the action movies like SPEED and THE NET, or at least pick a _funny_ script when you want to do comedy.
So, to recap, both of their characters are unsuited to their personalities. In addition, the idea of a Denis Leary-Sandra Bullock team-up in the first place isn't something nature ever intended. (What's next? Howard Stern and Kathie Lee Gifford?) The premise here has Leary as a small-time thief and Bullock as his lover. He's just stolen an antique painting and is trying to shake the cops. It opens with the traditional car chase and proceeds to a traditional train chase, before the two of them find a vacant island mansion to lay low in until their buyer shows up.
Nothing original so far, and if you stick around for the rest of the movie, you'll see Leary try to get back to nature by going fishing (He ends up shooting the fish.  All of these are second- rate sitcom and movie cliches that are reworked here with nothing original or amusing to add.
All the while, a group of the dumbest criminals you've ever seen and a detective are in the process of tracking Leary down to get the painting back. It all leads to a predictable, absurd climax, a suitable bookend to this dull comedy.  It wouldn't have hurted to give it another two... if by sea, of course.
Visit the Movie Critic at LARGE website at http://www.missouri.edu/~c667778/movies.html and check out the 40+ new reviews since Christmas.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Questionnable content comics content
Start On (comic ID)
Number on comic to show
Click me to confirm


Enumerable#group_by
January 17, 2015
What does the group_by
method do?
It looks like this:
some_array.group_by{|n| block}
Simply, the group_by
method that divides a collection (an array or a hash) into groups based on some given criteria in the block. It outputs a hash in which each key is resulting value of the block. The corresponding value is an array containing the elements of that group. Kinda make sense? Maybe an example will help.
Enumerable#group_by and Arrays
(0..20).group_by{|number| number % 4}
=>{0=>[0,4,8,12,16,20], 1=>[1,5,9,13,17], 2=>[2,6,10,14,18], 3=>[3,7,11,15,19]}
The numbers 0 through 20 are passed to the block, which received each number as the parameter number
. The result value of the block number % 4
determines which group each number will be placed. Those include 0, 1, 2, or 3.
- In the output, the hash will have 4 groups by the keys
0
,1
,2
, and3
. - The key
0
will have a value that is an array of multiples of 4 within the range (numbers for whichnumber % 4
is 0) - The key
1
will have a value that is an array of numbers that have a remainder of 1 when divided by 4 (numbers for whichnumber % 4
is 1) - The key
2
will have a value that is an array of numbers that have a remainder of 2 when divided by 4 (numbers for whichnumber % 4
is 2) - The key
3
will have a value that is an array of numbers that have a remainder of 3 when divided by 4 (numbers for whichnumber % 4
is 3)
Perhaps that's well enough but what about a scenario using strings?
Enumerable#group_by and Hash
Let's say that there's a pot luck happening at your place tomorrow. You've invited your closest group of friends and thankfully all of them are bringing some delicious goodies to share. However, the list is a little chaotic and you want to know if there will be double or triple of anything.
Here's the list:
potluck = {"Peter" => "lasagna",
"Lois" => "macaroni salad",
"Chris" => "lasagna",
"Meg" => "brownies",
"Stewie" => "chateaubriand",
"Brian" => "macaroni salad",
"Evil Monkey" => "brownies",
"Homer" => "beer",
"Marge" => "ribs",
"Lisa" => "chateaubriand",
"Bart" => "brownies",
"Maggie" => "beer"}
Let's sort the list by whatever the person is bringing.
potluck.group_by{|person, bringing| bringing}
=>{"lasagna"=>[["Peter", "lasagna"],
["Chris", "lasagna"]],
"macaroni salad"=>[["Lois", "macaroni salad"],
["Brian", "macaroni salad"]],
"brownies"=>[["Meg", "brownies"],
["Evil Monkey", "brownies"],
["Bart", "brownies"]],
"chateaubriand"=>[["Stewie", "chateaubriand"],
["Lisa", "chateaubriand"]],
"beer"=>[["Homer", "beer"], ["Maggie", "beer"]],
"ribs"=>[["Marge", "ribs"]]}
So in this case, we sorted the list so that we know exactly what's on the menu, who's bringing what, and if we'll have multiples of an item.
We, initially, set our parameters in the traditional hash format |key, value|
. In the original potluck list, the keys were names of the people; the values were what they were bringing. The criteria in the block was what they're bringing. So "bringing" will serve as the keys in the sorted list. The values will be whoever in the potluck
fits that criteria.
Wasn't that a little easier to read? Or maybe process? If list were much, much longer, then instead of having it sorted by an arbitrary fashion, we can regroup our data in a way that is more functional and useful!


(defclass appending-heap (heap) ;; For an APPENDING-HEAP, all writes take place to the heap's end. ;; The last 7 octets of the file always contain a serialized version ;; of the heap's end. ())


This module is similar to Command Shell, but allows simple commands to
be run on multiple servers concurrently instead of just on this server. On the
main page you can enter a command to run (or select an old one), and choose
one or more servers or groups to execute it on. Only servers that have been
created in the Webmin Servers Index module with a login and password
will appear in the list.


Training
Home
(current)
Link
Dropdown
Sign Up
Login
Logout
Disabled
This is a Training Project
#
Name
Duration
Stack
Price


Repeat 2 Repeat 2 Repeat 2 Repeat 2 Give me your love (4x) |


{% extends "base.html" %} {% block head_title_block %} About - {{ block.super }} {% endblock %} {% block main_content %}
The Dataverse is an open source web application to share, preserve, cite, explore and analyze research data. It facilitates making data available to others, and allows you to replicate others work. Researchers, data authors, publishers, data distributors, and affiliated institutions all receive appropriate credit.
A Dataverse repository hosts multiple dataverses. Each dataverse contains datatset or other dataverses, and each dataset contains descriptive metadata and data files (including documentation and code that accompany the data).
The Dataverse software is being developed at the Institute for Quantitative Social Science (IQSS) at Harvard University. Coding of the Dataverse Network software began in 2006 under the leadership of Mercè Crosas and Gary King. We benefited considerably from our experience with our earlier Virtual Data Center (VDC) project, which spanned 1999-2006 and was organized by Micah Altman, Gary King, and Sidney Verba as a collaboration between the Harvard-MIT Data Center (now part of IQSS) and the Harvard University Library. Precursors to the VDC date to 1987, comprising such entities as a stand-alone software guide to local data, preweb software, and tools to transfer cataloging information by FTP to other sites across campus automatically at designated times.
Principal Investigator: Gary King, Project Lead: Mercè Crosas
Development Team: Gustavo Durand (Development Manager), Leonid Andreev, Stephen Kraffmiller, Phil Durbin, Michael Bar-Sinai, Raman Prasad, Robert Treacy, Ellen Kraffmiller
UI/UX Team: Elizabeth Quigley, Michael Heppler
QA: Kevin Condon, Elda Sotiri
Curation and Archival Team: Sonia Barbosa, Eleni Castro, Dwayne Liburd
For more information, see the Data Science team at IQSS.Special thanks to Ella Michelle King, who won the contest to name our project, and to Pitney Bowe and The Forbin Group, Inc. for trademark assistance.


This CIX script will show you the contents of an archive (.ZIP or .ARC) file on the CIX Forums system. The list of files contained in the archive file will be saved to a file called FAT.TXT in your \download directory in your Ameol setup. You will be asked to choose the forum and topic where the archive file can be found from a list that resembles that found in the In Basket. You will also need to specify the name of the archive file.


| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| FetchProvider.js | 100% | 9/9 | 100% | 0/0 | 100% | 3/3 | 100% | 9/9 | |
| HttpClient.js | 82.14% | 23/28 | 50% | 11/22 | 33.33% | 2/6 | 84% | 21/25 | |
| HttpClientConfiguration.js | 93.55% | 29/31 | 71.43% | 20/28 | 83.33% | 5/6 | 96.43% | 27/28 | |
| HttpClientHelper.js | 90% | 18/20 | 50% | 1/2 | 80% | 4/5 | 90% | 18/20 | |
| HttpClientResponse.js | 63.64% | 28/44 | 68.18% | 15/22 | 11.76% | 2/17 | 72.22% | 26/36 |


UAInAppMessage Class Reference
| Inherits from | NSObject |
| Declared in | UAInAppMessage.h |
Tasks
-
+ message
-
+ messageWithPayload:
-
– isEqualToMessage:
-
payload
property -
identifier
property -
expiry
property -
extra
property -
displayType
property -
alert
property -
position
property -
duration
property -
primaryColor
property -
secondaryColor
property -
buttonGroup
property -
buttonActions
property -
onClick
property -
notificationActionContext
property -
notificationActions
property -
buttonCategory
property -
buttonActionBindings
property
Properties
alert
The alert message.
@property (nonatomic, copy, nullable) NSString *alert
Declared In
UAInAppMessage.h
buttonActionBindings
An array of UAInAppMessageButtonActionBinding instances, corresponding to the left-to-right order of interactive message buttons.
@property (nonatomic, readonly, nullable) NSArray *buttonActionBindings
Declared In
UAInAppMessage.h
buttonActions
A dictionary mapping button group keys to dictionaries mapping action names to action arguments. The relevant action(s) will be run when the user taps the associated button.
@property (nonatomic, copy, nullable) NSDictionary *buttonActions
Declared In
UAInAppMessage.h
buttonCategory
A UANotificationCategory instance, corresponding to the button group of the message. If no matching category is found, this property will be nil.
@property (nonatomic, readonly, nullable) UANotificationCategory *buttonCategory
Declared In
UAInAppMessage.h
buttonGroup
The button group (category) associated with the message. This value will determine which buttons are present and their localized titles.
@property (nonatomic, copy, nullable) NSString *buttonGroup
Declared In
UAInAppMessage.h
displayType
The display type. Defaults to UAInAppMessageDisplayTypeBanner
when built with the default class constructor, or UAInAppMessageDisplayTypeUnknown
when built from a payload with a missing or unidentified display type.
@property (nonatomic, assign) UAInAppMessageDisplayType displayType
Declared In
UAInAppMessage.h
duration
The amount of time to wait before automatically dismissing the message.
@property (nonatomic, assign) NSTimeInterval duration
Declared In
UAInAppMessage.h
expiry
The expiration date for the message. Unless otherwise specified, defaults to 30 days from construction.
@property (nonatomic, strong) NSDate *expiry
Declared In
UAInAppMessage.h
extra
Optional key value extras.
@property (nonatomic, copy, nullable) NSDictionary *extra
Declared In
UAInAppMessage.h
identifier
The unique identifier for the message (to be set from the associated send ID)
@property (nonatomic, copy, nullable) NSString *identifier
Declared In
UAInAppMessage.h
notificationActionContext
The chosen notification action context. If there are notification actions defined for UIUserNotificationActionContextMinimal, this context will be preferred. Othwerise, the context defaults to UIUserNotificationActionContextDefault.
@property (nonatomic, readonly) UIUserNotificationActionContext notificationActionContext
Declared In
UAInAppMessage.h
notificationActions
An array of UNNotificationAction instances corresponding to the left-to-right order of interactive message buttons.
@property (nonatomic, readonly, nullable) NSArray *notificationActions
Declared In
UAInAppMessage.h
onClick
A dictionary mapping an action name to an action argument. The relevant action will be run when the user taps or “clicks” on the message.
@property (nonatomic, copy, nullable) NSDictionary *onClick
Declared In
UAInAppMessage.h
payload
The in-app message payload in NSDictionary format
@property (nonatomic, readonly) NSDictionary *payload
Declared In
UAInAppMessage.h
position
The screen position. Defaults to UAInAppMessagePositionBottom
.
@property (nonatomic, assign) UAInAppMessagePosition position
Declared In
UAInAppMessage.h
Class Methods
message
Class factory method for constructing an unconfigured in-app message model.
+ (instancetype)message
Return Value
An unconfigured instance of UAInAppMessage.
Declared In
UAInAppMessage.h
Instance Methods
isEqualToMessage:
- (BOOL)isEqualToMessage:(nullable UAInAppMessage *)message
Parameters
- message
The message the receiver is being compared to.
Return Value
YES
if the two messages are equal by value, NO
otherwise.
Declared In
UAInAppMessage.h


TBI Credit offers personal loans in Romania. Before automating operations, the company handled 200 credit applications a month. In 2003, it installed Charisma. Now, the member of TBFI Financial Services handles 200 applications each day. "Our 50 stores run on Charisma", explains Traian Baicu, general manager at TBI Credit. "The back and front-office solutions from TotalSoft simplified operations and boosted our sales." Charisma automated credit file management, risk analysis and accounting. With the system, store managers also complete a new credit application in about 5 minutes. "Charisma Credit made us 30 times faster. The speed of our credit approval is our main competitive advantage", concludes Baicu.