001/* 002// This software is subject to the terms of the Eclipse Public License v1.0 003// Agreement, available at the following URL: 004// http://www.eclipse.org/legal/epl-v10.html. 005// You must accept the terms of that agreement to use this software. 006// 007// Copyright (C) 2008-2009 Pentaho 008// All Rights Reserved. 009*/ 010package mondrian.olap.fun.vba; 011 012import mondrian.olap.InvalidArgumentException; 013import mondrian.olap.fun.JavaFunDef; 014 015import static mondrian.olap.fun.JavaFunDef.Description; 016import static mondrian.olap.fun.JavaFunDef.FunctionName; 017 018/** 019 * Implementations of functions in the Excel worksheet library. 020 * 021 * <p>Functions are loaded into the function table by reflection. 022 * 023 * @author jhyde 024 * @since Dec 31, 2007 025 */ 026public abstract class Excel { 027 // There follows a list of all functions defined in Excel. Functions are 028 // marked 'todo:' if they still need to be implemented; 'skip:' if they 029 // are implemented elsewhere, such as in Vba or there there is an explicit 030 // implementation of FunDef for them. A FunDef typically allows a more 031 // efficient implementation. 032 033 // AccrInt Returns the accrued interest for a security that pays periodic 034 // interest. 035 036 // AccrIntM Returns the accrued interest for a security that pays interest 037 // at maturity. 038 039 @FunctionName("Acos") 040 @JavaFunDef.Signature("Acos(number)") 041 @Description( 042 "Returns the arccosine, or inverse cosine, of a number. The arccosine " 043 + "is the angle whose cosine is Arg1. The returned angle is given in " 044 + "radians in the range 0 (zero) to pi.") 045 public static double acos(double number) { 046 return Math.acos(number); 047 } 048 049 @FunctionName("Acosh") 050 @JavaFunDef.Signature("Acosh(number)") 051 @Description( 052 "Returns the inverse hyperbolic cosine of a number. Number must be " 053 + "greater than or equal to 1. The inverse hyperbolic cosine is the " 054 + "value whose hyperbolic cosine is Arg1, so Acosh(Cosh(number)) " 055 + "equals Arg1.") 056 public static double acosh(double x) { 057 return Math.log(x + Math.sqrt((x * x) - 1.0)); 058 } 059 060 // Todo: AmorDegrc Returns the depreciation for each accounting 061 // period. This function is provided for the French accounting 062 // system. 063 064 // Todo: AmorLinc Returns the depreciation for each accounting 065 // period. This function is provided for the French accounting 066 // system. 067 068 // Skip: And Returns TRUE if all its arguments are TRUE; returns 069 // FALSE if one or more argument is FALSE. 070 071 // Todo: Asc For Double-byte character set (DBCS) languages, 072 // changes full-width (double-byte) characters to half-width 073 // (single-byte) characters. 074 075 @FunctionName("Asin") 076 @JavaFunDef.Signature("Asin(number)") 077 @Description( 078 "Returns the arcsine, or inverse sine, of a number. The arcsine is the " 079 + "angle whose sine is Arg1. The returned angle is given in radians in " 080 + "the range -pi/2 to pi/2.") 081 public static double asin(double number) { 082 return Math.asin(number); 083 } 084 085 @FunctionName("Asinh") 086 @JavaFunDef.Signature("Asinh(number)") 087 @Description( 088 "Returns the inverse hyperbolic sine of a number. The inverse " 089 + "hyperbolic sine is the value whose hyperbolic sine is Arg1, " 090 + "so Asinh(Sinh(number)) equals Arg1.") 091 public static double asinh(double x) { 092 return Math.log(x + Math.sqrt(1.0 + (x * x))); 093 } 094 095 @FunctionName("Atan2") 096 @JavaFunDef.Signature("Atan2(x, y)") 097 @Description( 098 "Returns the arctangent, or inverse tangent, of the specified x- and " 099 + "y-coordinates. The arctangent is the angle from the x-axis to a " 100 + "line containing the origin (0, 0) and a point with coordinates " 101 + "(x_num, y_num). The angle is given in radians between -pi and pi, " 102 + "excluding -pi.") 103 public static double atan2(double y, double x) { 104 return Math.atan2(y, x); 105 } 106 107 @FunctionName("Atanh") 108 @JavaFunDef.Signature("Atanh(number)") 109 @Description( 110 "Returns the inverse hyperbolic tangent of a number. Number " 111 + "must be between -1 and 1 (excluding -1 and 1).") 112 public static double atanh(double x) { 113 return .5 * Math.log((1.0 + x) / (1.0 - x)); 114 } 115 116 // Todo: AveDev Returns the average of the absolute deviations of data 117 // points from their mean. AveDev is a measure of the variability in a data 118 // set. 119 120 // Todo: Average Returns the average (arithmetic mean) of the arguments. 121 122 // Todo: AverageIf Returns the average (arithmetic mean) of all the cells in 123 // a range that meet a given criteria. 124 125 // Todo: AverageIfs Returns the average (arithmetic mean) of all cells that 126 // meet multiple criteria. 127 128 // Todo: BahtText Converts a number to Thai text and adds a suffix of 129 // "Baht." 130 131 // Todo: BesselI Returns the modified Bessel function, which is equivalent 132 // to the Bessel function evaluated for purely imaginary arguments. 133 134 // Todo: BesselJ Returns the Bessel function. 135 136 // Todo: BesselK Returns the modified Bessel function, which is equivalent 137 // to the Bessel functions evaluated for purely imaginary arguments. 138 139 // Todo: BesselY Returns the Bessel function, which is also called the Weber 140 // function or the Neumann function. 141 142 // Todo: BetaDist Returns the beta cumulative distribution function. 143 144 // Todo: BetaInv Returns the inverse of the cumulative distribution function 145 // for a specified beta distribution. That is, if probability = 146 // BetaDist(x,...), then BetaInv(probability,...) = x. 147 148 // Todo: Bin2Dec Converts a binary number to decimal. 149 150 // Todo: Bin2Hex Converts a binary number to hexadecimal. 151 152 // Todo: Bin2Oct Converts a binary number to octal. 153 154 // Todo: BinomDist Returns the individual term binomial distribution 155 // probability. 156 157 // Todo: Ceiling Returns number rounded up, away from zero, to the nearest 158 // multiple of significance. 159 160 // Todo: ChiDist Returns the one-tailed probability of the chi-squared 161 // distribution. 162 163 // Todo: ChiInv Returns the inverse of the one-tailed probability of the 164 // chi-squared distribution. 165 166 // Todo: ChiTest Returns the test for independence. 167 168 // Todo: Choose Uses Arg1 as the index to return a value from the list of 169 // value arguments. 170 171 // Todo: Clean Removes all nonprintable characters from text. 172 173 // Todo: Combin Returns the number of combinations for a given number of 174 // items. Use Combin to determine the total possible number of groups for a 175 // given number of items. 176 177 // Todo: Complex Converts real and imaginary coefficients into a complex 178 // number of the form x + yi or x + yj. 179 180 // Todo: Confidence Returns a value that you can use to construct a 181 // confidence interval for a population mean. 182 183 // Todo: Convert Converts a number from one measurement system to 184 // another. For example, Convert can translate a table of distances in miles 185 // to a table of distances in kilometers. 186 187 // Todo: Correl Returns the correlation coefficient of the Arg1 and Arg2 188 // cell ranges. 189 190 @FunctionName("Cosh") 191 @Description("Returns the hyperbolic cosine of a number.") 192 public static double cosh(double number) { 193 return Math.cosh(number); 194 } 195 196 // Todo: Count Counts the number of cells that contain numbers and counts 197 // numbers within the list of arguments. 198 199 // Todo: CountA Counts the number of cells that are not empty and the values 200 // within the list of arguments. 201 202 // Todo: CountBlank Counts empty cells in a specified range of cells. 203 204 // Todo: CountIf Counts the number of cells within a range that meet the 205 // given criteria. 206 207 // Todo: CountIfs Counts the number of cells within a range that meet 208 // multiple criteria. 209 210 // Todo: CoupDayBs Returns the number of days from the beginning of the 211 // coupon period to the settlement date. 212 213 // Todo: CoupDays Returns the number of days in the coupon period that 214 // contains the settlement date. 215 216 // Todo: CoupDaysNc Returns the number of days from the settlement date to 217 // the next coupon date. 218 219 // Todo: CoupNcd Returns a number that represents the next coupon date after 220 // the settlement date. 221 222 // Todo: CoupNum Returns the number of coupons payable between the 223 // settlement date and maturity date, rounded up to the nearest whole 224 // coupon. 225 226 // Todo: CoupPcd The description for this item will appear in the final 227 // release of Office 2007. 228 229 // Todo: Covar Returns covariance, the average of the products of deviations 230 // for each data point pair. 231 232 // Todo: CritBinom Returns the smallest value for which the cumulative 233 // binomial distribution is greater than or equal to a criterion value. 234 235 // Todo: CumIPmt Returns the cumulative interest paid on a loan between 236 // start_period and end_period. 237 238 // Todo: CumPrinc Returns the cumulative principal paid on a loan between 239 // start_period and end_period. 240 241 // Todo: DAverage Averages the values in a column of a list or database that 242 // match conditions you specify. 243 244 // Todo: Days360 Returns the number of days between two dates based on a 245 // 360-day year (twelve 30-day months), which is used in some accounting 246 // calculations. 247 248 // Todo: Db Returns the depreciation of an asset for a specified period 249 // using the fixed-declining balance method. 250 251 // Todo: Dbcs The description for this item will appear in the final release 252 // of Office 2007. 253 254 // Todo: DCount Counts the cells that contain numbers in a column of a list 255 // or database that match conditions that you specify. 256 257 // Todo: DCountA Counts the nonblank cells in a column of a list or database 258 // that match conditions that you specify. 259 260 // Todo: Ddb Returns the depreciation of an asset for a specified period 261 // using the double-declining balance method or some other method you 262 // specify. 263 264 // Todo: Dec2Bin Converts a decimal number to binary. 265 266 // Todo: Dec2Hex Converts a decimal number to hexadecimal. 267 268 // Todo: Dec2Oct Converts a decimal number to octal. 269 270 // Todo: Degrees Converts radians into degrees. 271 272 273 @FunctionName("Degrees") 274 @Description("Converts radians to degrees.") 275 public static double degrees(double number) { 276 // 180 degrees = Pi radians 277 return number * 180.0 / Math.PI; 278 } 279 280 // Todo: Delta Tests whether two values are equal. Returns 1 if number1 = 281 // number2; returns 0 otherwise. 282 283 // Todo: DevSq Returns the sum of squares of deviations of data points from 284 // their sample mean. 285 286 // Todo: DGet Extracts a single value from a column of a list or database 287 // that matches conditions that you specify. 288 289 // Todo: Disc Returns the discount rate for a security. 290 291 // Todo: DMax Returns the largest number in a column of a list or database 292 // that matches conditions you that specify. 293 294 // Todo: DMin Returns the smallest number in a column of a list or database 295 // that matches conditions that you specify. 296 297 // Todo: Dollar The function described in this Help topic converts a number 298 // to text format and applies a currency symbol. The name of the function 299 // (and the symbol that it applies) depends upon your language settings. 300 301 // Todo: DollarDe Converts a dollar price expressed as a fraction into a 302 // dollar price expressed as a decimal number. Use DOLLARDE to convert 303 // fractional dollar numbers, such as securities prices, to decimal numbers. 304 305 // Todo: DollarFr Converts a dollar price expressed as a decimal number into 306 // a dollar price expressed as a fraction. Use DOLLARFR to convert decimal 307 // numbers to fractional dollar numbers, such as securities prices. 308 309 // Todo: DProduct Multiplies the values in a column of a list or database 310 // that match conditions that you specify. 311 312 // Todo: DStDev Estimates the standard deviation of a population based on a 313 // sample by using the numbers in a column of a list or database that match 314 // conditions that you specify. 315 316 // Todo: DStDevP Calculates the standard deviation of a population based on 317 // the entire population by using the numbers in a column of a list or 318 // database that match conditions that you specify. 319 320 // Todo: DSum Adds the numbers in a column of a list or database that match 321 // conditions that you specify. 322 323 // Todo: Duration Returns the Macauley duration for an assumed par value of 324 // $100. Duration is defined as the weighted average of the present value of 325 // the cash flows and is used as a measure of a bond price's response to 326 // changes in yield. 327 328 // Todo: DVar Estimates the variance of a population based on a sample by 329 // using the numbers in a column of a list or database that match conditions 330 // that you specify. 331 332 // Todo: DVarP Calculates the variance of a population based on the entire 333 // population by using the numbers in a column of a list or database that 334 // match conditions that you specify. 335 336 // Todo: EDate Returns the serial number that represents the date that is 337 // the indicated number of months before or after a specified date (the 338 // start_date). Use EDATE to calculate maturity dates or due dates that fall 339 // on the same day of the month as the date of issue. 340 341 // Todo: Effect Returns the effective annual interest rate, given the 342 // nominal annual interest rate and the number of compounding periods per 343 // year. 344 345 // Todo: EoMonth Returns the serial number for the last day of the month 346 // that is the indicated number of months before or after start_date. Use 347 // EOMONTH to calculate maturity dates or due dates that fall on the last 348 // day of the month. 349 350 // Todo: Erf Returns the error function integrated between lower_limit and 351 // upper_limit. 352 353 // Todo: ErfC The description for this item will appear in the final release 354 // of Office 2007. 355 356 // Todo: Even Returns number rounded up to the nearest even integer. You can 357 // use this function for processing items that come in twos. For example, a 358 // packing crate accepts rows of one or two items. The crate is full when 359 // the number of items, rounded up to the nearest two, matches the crate's 360 // capacity. 361 362 // Todo: ExponDist Returns the exponential distribution. Use EXPONDIST to 363 // model the time between events, such as how long an automated bank teller 364 // takes to deliver cash. For example, you can use EXPONDIST to determine 365 // the probability that the process takes at most 1 minute. 366 367 // Todo: Fact Returns the factorial of a number. The factorial of a number 368 // is equal to 1*2*3*...* number. 369 370 // Todo: FactDouble Returns the double factorial of a number. 371 372 // Todo: FDist Returns the F probability distribution. You can use this 373 // function to determine whether two data sets have different degrees of 374 // diversity. For example, you can examine the test scores of men and women 375 // entering high school and determine if the variability in the females is 376 // different from that found in the males. 377 378 // Todo: Find Finds specific information in a worksheet. 379 380 // Todo: FindB FIND and FINDB locate one text string within a second text 381 // string, and return the number of the starting position of the first text 382 // string from the first character of the second text string. 383 384 // Todo: FInv Returns the inverse of the F probability distribution. If p = 385 // FDIST(x,...), then FINV(p,...) = x. 386 387 // Todo: Fisher Returns the Fisher transformation at x. This transformation 388 // produces a function that is normally distributed rather than skewed. Use 389 // this function to perform hypothesis testing on the correlation 390 // coefficient. 391 392 // Todo: FisherInv Returns the inverse of the Fisher transformation. Use 393 // this transformation when analyzing correlations between ranges or arrays 394 // of data. If y = FISHER(x), then FISHERINV(y) = x. 395 396 // Todo: Fixed Rounds a number to the specified number of decimals, formats 397 // the number in decimal format using a period and commas, and returns the 398 // result as text. 399 400 // Todo: Floor Rounds number down, toward zero, to the nearest multiple of 401 // significance. 402 403 // Todo: Forecast Calculates, or predicts, a future value by using existing 404 // values. The predicted value is a y-value for a given x-value. The known 405 // values are existing x-values and y-values, and the new value is predicted 406 // by using linear regression. You can use this function to predict future 407 // sales, inventory requirements, or consumer trends. 408 409 // Todo: Frequency Calculates how often values occur within a range of 410 // values, and then returns a vertical array of numbers. For example, use 411 // FREQUENCY to count the number of test scores that fall within ranges of 412 // scores. Because FREQUENCY returns an array, it must be entered as an 413 // array formula. 414 415 // Todo: FTest Returns the result of an F-test. An F-test returns the 416 // two-tailed probability that the variances in array1 and array2 are not 417 // significantly different. Use this function to determine whether two 418 // samples have different variances. For example, given test scores from 419 // public and private schools, you can test whether these schools have 420 // different levels of test score diversity. 421 422 // Todo: Fv Returns the future value of an investment based on periodic, 423 // constant payments and a constant interest rate. 424 425 // Todo: FVSchedule Returns the future value of an initial principal after 426 // applying a series of compound interest rates. Use FVSCHEDULE to calculate 427 // the future value of an investment with a variable or adjustable rate. 428 429 // Todo: GammaDist Returns the gamma distribution. You can use this function 430 // to study variables that may have a skewed distribution. The gamma 431 // distribution is commonly used in queuing analysis. 432 433 // Todo: GammaInv Returns the inverse of the gamma cumulative 434 // distribution. If p = GAMMADIST(x,...), then GAMMAINV(p,...) = x. 435 436 // Todo: GammaLn Returns the natural logarithm of the gamma function, ?(x). 437 438 // Todo: Gcd Returns the greatest common divisor of two or more 439 // integers. The greatest common divisor is the largest integer that divides 440 // both number1 and number2 without a remainder. 441 442 // Todo: GeoMean Returns the geometric mean of an array or range of positive 443 // data. For example, you can use GEOMEAN to calculate average growth rate 444 // given compound interest with variable rates. 445 446 // Todo: GeStep Returns 1 if number ? step; returns 0 (zero) otherwise. Use 447 // this function to filter a set of values. For example, by summing several 448 // GESTEP functions you calculate the count of values that exceed a 449 // threshold. 450 451 // Todo: Growth Calculates predicted exponential growth by using existing 452 // data. GROWTH returns the y-values for a series of new x-values that you 453 // specify by using existing x-values and y-values. You can also use the 454 // GROWTH worksheet function to fit an exponential curve to existing 455 // x-values and y-values. 456 457 // Todo: HarMean Returns the harmonic mean of a data set. The harmonic mean 458 // is the reciprocal of the arithmetic mean of reciprocals. 459 460 // Todo: Hex2Bin Converts a hexadecimal number to binary. 461 462 // Todo: Hex2Dec Converts a hexadecimal number to decimal. 463 464 // Todo: Hex2Oct Converts a hexadecimal number to octal. 465 466 // Todo: HLookup Searches for a value in the top row of a table or an array 467 // of values, and then returns a value in the same column from a row you 468 // specify in the table or array. Use HLOOKUP when your comparison values 469 // are located in a row across the top of a table of data, and you want to 470 // look down a specified number of rows. Use VLOOKUP when your comparison 471 // values are located in a column to the left of the data you want to find. 472 473 // Todo: HypGeomDist Returns the hypergeometric distribution. HYPGEOMDIST 474 // returns the probability of a given number of sample successes, given the 475 // sample size, population successes, and population size. Use HYPGEOMDIST 476 // for problems with a finite population, where each observation is either a 477 // success or a failure, and where each subset of a given size is chosen 478 // with equal likelihood. 479 480 // Todo: IfError Returns a value you specify if a formula evaluates to an 481 // error; otherwise, returns the result of the formula. Use the IFERROR 482 // function to trap and handle errors in a formula. 483 484 // Todo: ImAbs Returns the absolute value (modulus) of a complex number in x 485 // + yi or x + yj text format. 486 487 // Todo: Imaginary Returns the imaginary coefficient of a complex number in 488 // x + yi or x + yj text format. 489 490 // Todo: ImArgument Returns the argument (theta), an angle expressed in 491 // radians, such that: 492 493 // Todo: ImConjugate Returns the complex conjugate of a complex number in x 494 // + yi or x + yj text format. 495 496 // Todo: ImCos Returns the cosine of a complex number in x + yi or x + yj 497 // text format. 498 499 // Todo: ImDiv Returns the quotient of two complex numbers in x + yi or x + 500 // yj text format. 501 502 // Todo: ImExp Returns the exponential of a complex number in x + yi or x + 503 // yj text format. 504 505 // Todo: ImLn Returns the natural logarithm of a complex number in x + yi or 506 // x + yj text format. 507 508 // Todo: ImLog10 Returns the common logarithm (base 10) of a complex number 509 // in x + yi or x + yj text format. 510 511 // Todo: ImLog2 Returns the base-2 logarithm of a complex number in x + yi 512 // or x + yj text format. 513 514 // Todo: ImPower Returns a complex number in x + yi or x + yj text format 515 // raised to a power. 516 517 // Todo: ImProduct Returns the product of 2 to 29 complex numbers in x + yi 518 // or x + yj text format. 519 520 // Todo: ImReal Returns the real coefficient of a complex number in x + yi 521 // or x + yj text format. 522 523 // Todo: ImSin Returns the sine of a complex number in x + yi or x + yj text 524 // format. 525 526 // Todo: ImSqrt Returns the square root of a complex number in x + yi or x + 527 // yj text format. 528 529 // Todo: ImSub Returns the difference of two complex numbers in x + yi or x 530 // + yj text format. 531 532 // Todo: ImSum Returns the sum of two or more complex numbers in x + yi or x 533 // + yj text format. 534 535 // Todo: Index Returns a value or the reference to a value from within a 536 // table or range. There are two forms of the INDEX function: the array form 537 // and the reference form. 538 539 // Todo: Intercept Calculates the point at which a line will intersect the 540 // y-axis by using existing x-values and y-values. The intercept point is 541 // based on a best-fit regression line plotted through the known x-values 542 // and known y-values. Use the INTERCEPT function when you want to determine 543 // the value of the dependent variable when the independent variable is 0 544 // (zero). For example, you can use the INTERCEPT function to predict a 545 // metal's electrical resistance at 0C when your data points were taken at 546 // room temperature and higher. 547 548 // Todo: IntRate Returns the interest rate for a fully invested security. 549 550 // Todo: Ipmt Returns the interest payment for a given period for an 551 // investment based on periodic, constant payments and a constant interest 552 // rate. 553 554 // Todo: Irr Returns the internal rate of return for a series of cash flows 555 // represented by the numbers in values. These cash flows do not have to be 556 // even, as they would be for an annuity. However, the cash flows must occur 557 // at regular intervals, such as monthly or annually. The internal rate of 558 // return is the interest rate received for an investment consisting of 559 // payments (negative values) and income (positive values) that occur at 560 // regular periods. 561 562 // Todo: IsErr Checks the type of value and returns TRUE or FALSE depending 563 // if the value refers to any error value except #N/A. 564 565 // Todo: IsError Checks the type of value and returns TRUE or FALSE 566 // depending if the value refers to any error value (#N/A, #VALUE!, #REF!, 567 // #DIV/0!, #NUM!, #NAME?, or #NULL!). 568 569 // Todo: IsEven Checks the type of value and returns TRUE or FALSE depending 570 // if the value is even. 571 572 // Todo: IsLogical Checks the type of value and returns TRUE or FALSE 573 // depending if the value refers to a logical value. 574 575 // Todo: IsNA Checks the type of value and returns TRUE or FALSE depending 576 // if the value refers to the #N/A (value not available) error value. 577 578 // Todo: IsNonText Checks the type of value and returns TRUE or FALSE 579 // depending if the value refers to any item that is not text. (Note that 580 // this function returns TRUE if value refers to a blank cell.) 581 582 // Todo: IsNumber Checks the type of value and returns TRUE or FALSE 583 // depending if the value refers to a number. 584 585 // Todo: IsOdd Checks the type of value and returns TRUE or FALSE depending 586 // if the value is odd. 587 588 // Todo: Ispmt Calculates the interest paid during a specific period of an 589 // investment. This function is provided for compatibility with Lotus 1-2-3. 590 591 // Todo: IsText Checks the type of value and returns TRUE or FALSE depending 592 // if the value refers to text. 593 594 // Todo: Kurt Returns the kurtosis of a data set. Kurtosis characterizes the 595 // relative peakedness or flatness of a distribution compared with the 596 // normal distribution. Positive kurtosis indicates a relatively peaked 597 // distribution. Negative kurtosis indicates a relatively flat distribution. 598 599 // Todo: Large Returns the k-th largest value in a data set. You can use 600 // this function to select a value based on its relative standing. For 601 // example, you can use LARGE to return the highest, runner-up, or 602 // third-place score. 603 604 // Todo: Lcm Returns the least common multiple of integers. The least common 605 // multiple is the smallest positive integer that is a multiple of all 606 // integer arguments number1, number2, and so on. Use LCM to add fractions 607 // with different denominators. 608 609 // Todo: LinEst Calculates the statistics for a line by using the "least 610 // squares" method to calculate a straight line that best fits your data, 611 // and returns an array that describes the line. Because this function 612 // returns an array of values, it must be entered as an array formula. 613 614 // Todo: Ln Returns the natural logarithm of a number. Natural logarithms 615 // are based on the constant e (2.71828182845904). 616 617 618 // See Vba 619 // Skip: Log Returns the logarithm of a number to the base you specify. 620 621 @FunctionName("Log10") 622 @Description("Returns the base-10 logarithm of a number.") 623 public static double log10(double number) { 624 return Math.log10(number); 625 } 626 627 // Todo: LogEst In regression analysis, calculates an exponential curve that 628 // fits your data and returns an array of values that describes the 629 // curve. Because this function returns an array of values, it must be 630 // entered as an array formula. 631 632 // Todo: LogInv Use the lognormal distribution to analyze logarithmically 633 // transformed data. 634 635 // Todo: LogNormDist Returns the cumulative lognormal distribution of x, 636 // where ln(x) is normally distributed with parameters mean and 637 // standard_dev. Use this function to analyze data that has been 638 // logarithmically transformed. 639 640 // Todo: Lookup Returns a value either from a one-row or one-column range or 641 // from an array. The LOOKUP function has two syntax forms: the vector form 642 // and the array form. 643 644 // Todo: Match Returns the relative position of an item in an array that 645 // matches a specified value in a specified order. Use MATCH instead of one 646 // of the LOOKUP functions when you need the position of an item in a range 647 // instead of the item itself. 648 649 // Skip: Max Returns the largest value in a set of values. Todo: MDeterm 650 // Returns the matrix determinant of an array. 651 652 /** 653 * The MOD function. Not technically in the Excel package, but this seemed 654 * like a good place to put it, since Excel has a MOD function. 655 * 656 * @param first First 657 * @param second Second 658 * @return First modulo second 659 */ 660 @FunctionName("Mod") 661 @JavaFunDef.Signature("Mod(n, d)") 662 @Description("Returns the remainder of dividing n by d.") 663 public static double mod( 664 Object first, 665 Object second) 666 { 667 double iFirst; 668 if (!(first instanceof Number)) { 669 throw new InvalidArgumentException( 670 "Invalid parameter. " 671 + "first parameter " + first 672 + " of Mod function must be of type number"); 673 } else { 674 iFirst = ((Number) first).doubleValue(); 675 } 676 double iSecond; 677 if (!(second instanceof Number)) { 678 throw new InvalidArgumentException( 679 "Invalid parameter. " 680 + "second parameter " + second 681 + " of Mod function must be of type number"); 682 } else { 683 iSecond = ((Number) second).doubleValue(); 684 } 685 // Use formula "mod(n, d) = n - d * int(n / d)". 686 if (iSecond == 0) { 687 throw new ArithmeticException("/ by zero"); 688 } 689 return iFirst - iSecond * Vba.intNative(iFirst / iSecond); 690 } 691 692 // Todo: MDuration Returns the modified Macauley duration for a security 693 // with an assumed par value of $100. 694 695 // Skip: Median Returns the median of the given numbers. The median is the 696 // number in the middle of a set of numbers. Skip: Min Returns the smallest 697 // number in a set of values. Todo: MInverse Returns the inverse matrix for 698 // the matrix stored in an array. 699 700 // Todo: MIrr Returns the modified internal rate of return for a series of 701 // periodic cash flows. MIRR considers both the cost of the investment and 702 // the interest received on reinvestment of cash. 703 704 // Todo: MMult Returns the matrix product of two arrays. The result is an 705 // array with the same number of rows as array1 and the same number of 706 // columns as array2. 707 708 // Todo: Mode Returns the most frequently occurring, or repetitive, value in 709 // an array or range of data. 710 711 // Todo: MRound Returns a number rounded to the desired multiple. 712 713 // Todo: MultiNomial Returns the ratio of the factorial of a sum of values 714 // to the product of factorials. 715 716 // Todo: NegBinomDist Returns the negative binomial 717 // distribution. NEGBINOMDIST returns the probability that there will be 718 // number_f failures before the number_s-th success, when the constant 719 // probability of a success is probability_s. This function is similar to 720 // the binomial distribution, except that the number of successes is fixed, 721 // and the number of trials is variable. Like the binomial, trials are 722 // assumed to be independent. 723 724 // Todo: NetworkDays Returns the number of whole working days between 725 // start_date and end_date. Working days exclude weekends and any dates 726 // identified in holidays. Use NETWORKDAYS to calculate employee benefits 727 // that accrue based on the number of days worked during a specific term. 728 729 // Todo: Nominal Returns the nominal annual interest rate, given the 730 // effective rate and the number of compounding periods per year. 731 732 // Todo: NormDist Returns the normal distribution for the specified mean and 733 // standard deviation. This function has a very wide range of applications 734 // in statistics, including hypothesis testing. 735 736 // Todo: NormInv Returns the inverse of the normal cumulative distribution 737 // for the specified mean and standard deviation. 738 739 // Todo: NormSDist Returns the standard normal cumulative distribution 740 // function. The distribution has a mean of 0 (zero) and a standard 741 // deviation of one. Use this function in place of a table of standard 742 // normal curve areas. 743 744 // Todo: NormSInv Returns the inverse of the standard normal cumulative 745 // distribution. The distribution has a mean of zero and a standard 746 // deviation of one. 747 748 // Todo: NPer Returns the number of periods for an investment based on 749 // periodic, constant payments and a constant interest rate. 750 751 // Todo: Npv Calculates the net present value of an investment by using a 752 // discount rate and a series of future payments (negative values) and 753 // income (positive values). 754 755 // Todo: Oct2Bin Converts an octal number to binary. 756 757 // Todo: Oct2Dec Converts an octal number to decimal. 758 759 // Todo: Oct2Hex Converts an octal number to hexadecimal. 760 761 // Todo: Odd Returns number rounded up to the nearest odd integer. 762 763 // Todo: OddFPrice Returns the price per $100 face value of a security 764 // having an odd (short or long) first period. 765 766 // Todo: OddFYield Returns the yield of a security that has an odd (short or 767 // long) first period. 768 769 // Todo: OddLPrice Returns the price per $100 face value of a security 770 // having an odd (short or long) last coupon period. 771 772 // Todo: OddLYield Returns the yield of a security that has an odd (short or 773 // long) last period. 774 775 // Skip: Or Returns TRUE if any argument is TRUE; returns FALSE if all 776 // arguments are FALSE. Todo: Pearson Returns the Pearson product moment 777 // correlation coefficient, r, a dimensionless index that ranges from -1.0 778 // to 1.0 inclusive and reflects the extent of a linear relationship between 779 // two data sets. 780 781 782 // We have a more efficient implementation of percentile 783 784 // Skip: Percentile Returns the k-th percentile of values in a range. You 785 // can use this function to establish a threshold of acceptance. For 786 // example, you can decide to examine candidates who score above the 90th 787 // percentile. 788 789 // Todo: PercentRank Returns the rank of a value in a data set as a 790 // percentage of the data set. This function can be used to evaluate the 791 // relative standing of a value within a data set. For example, you can use 792 // PERCENTRANK to evaluate the standing of an aptitude test score among all 793 // scores for the test. 794 795 // Todo: Permut Returns the number of permutations for a given number of 796 // objects that can be selected from number objects. A permutation is any 797 // set or subset of objects or events where internal order is 798 // significant. Permutations are different from combinations, for which the 799 // internal order is not significant. Use this function for lottery-style 800 // probability calculations. 801 802 // Todo: Phonetic Extracts the phonetic (furigana) characters from a text 803 // string. 804 805 806 @FunctionName("Pi") 807 @Description( 808 "Returns the number 3.14159265358979, the mathematical constant pi, " 809 + "accurate to 15 digits.") 810 public static double pi() { 811 return Math.PI; 812 } 813 814 // Todo: Pmt Calculates the payment for a loan based on constant payments 815 // and a constant interest rate. 816 817 // Todo: Poisson Returns the Poisson distribution. A common application of 818 // the Poisson distribution is predicting the number of events over a 819 // specific time, such as the number of cars arriving at a toll plaza in 1 820 // minute. 821 822 823 @FunctionName("Power") 824 @Description("Returns the result of a number raised to a power.") 825 public static double power(double x, double y) { 826 return Math.pow(x, y); 827 } 828 829 // Todo: Ppmt Returns the payment on the principal for a given period for an 830 // investment based on periodic, constant payments and a constant interest 831 // rate. 832 833 // Todo: Price Returns the price per $100 face value of a security that pays 834 // periodic interest. 835 836 // Todo: PriceDisc Returns the price per $100 face value of a discounted 837 // security. 838 839 // Todo: PriceMat Returns the price per $100 face value of a security that 840 // pays interest at maturity. 841 842 // Todo: Prob Returns the probability that values in a range are between two 843 // limits. If upper_limit is not supplied, returns the probability that 844 // values in x_range are equal to lower_limit. 845 846 // Todo: Product Multiplies all the numbers given as arguments and returns 847 // the product. 848 849 // Todo: Proper Capitalizes the first letter in a text string and any other 850 // letters in text that follow any character other than a letter. Converts 851 // all other letters to lowercase letters. 852 853 // Todo: Pv Returns the present value of an investment. The present value is 854 // the total amount that a series of future payments is worth now. For 855 // example, when you borrow money, the loan amount is the present value to 856 // the lender. 857 858 // Todo: Quartile Returns the quartile of a data set. Quartiles often are 859 // used in sales and survey data to divide populations into groups. For 860 // example, you can use QUARTILE to find the top 25 percent of incomes in a 861 // population. 862 863 // Todo: Quotient Returns the integer portion of a division. Use this 864 // function when you want to discard the remainder of a division. 865 866 867 @FunctionName("Radians") 868 @Description("Converts degrees to radians.") 869 public static double radians(double number) { 870 // 180 degrees = Pi radians 871 return number / 180.0 * Math.PI; 872 } 873 874 // Todo: RandBetween Returns a random integer number between the numbers you 875 // specify. A new random integer number is returned every time the worksheet 876 // is calculated. 877 878 // Skip: Rank Returns the rank of a number in a list of numbers. The rank of 879 // a number is its size relative to other values in a list. (If you were to 880 // sort the list, the rank of the number would be its position.) Todo: Rate 881 // Returns the interest rate per period of an annuity. RATE is calculated by 882 // iteration and can have zero or more solutions. If the successive results 883 // of RATE do not converge to within 0.0000001 after 20 iterations, RATE 884 // returns the #NUM! error value. 885 886 // Todo: Received Returns the amount received at maturity for a fully 887 // invested security. 888 889 // Todo: Replace Replaces part of a text string, based on the number of 890 // characters you specify, with a different text string. 891 892 // Todo: ReplaceB REPLACEB replaces part of a text string, based on the 893 // number of bytes you specify, with a different text string. 894 895 // Todo: Rept Repeats text a given number of times. Use REPT to fill a cell 896 // with a number of instances of a text string. 897 898 // Todo: Roman Converts an arabic numeral to roman, as text. 899 900 // Todo: Round Rounds a number to a specified number of digits. 901 902 // Todo: RoundDown Rounds a number down, toward zero. 903 904 // Todo: RoundUp Rounds a number up, away from 0 (zero). 905 906 // Todo: RSq Returns the square of the Pearson product moment correlation 907 // coefficient through data points in known_y's and known_x's. For more 908 // information, see PEARSON. The r-squared value can be interpreted as the 909 // proportion of the variance in y attributable to the variance in x. 910 911 // Todo: RTD This method connects to a source to receive real-time data. 912 913 // Todo: Search SEARCH and SEARCHB locate one text string within a second 914 // text string, and return the number of the starting position of the first 915 // text string from the first character of the second text string. 916 917 // Todo: SearchB SEARCH and SEARCHB locate one text string within a second 918 // text string, and return the number of the starting position of the first 919 // text string from the first character of the second text string. 920 921 // Todo: SeriesSum Returns the sum of a power series based on the formula: 922 923 // Todo: Sinh Returns the hyperbolic sine of a number. 924 925 926 @FunctionName("Sinh") 927 @Description("Returns the hyperbolic sine of a number.") 928 public static double sinh(double number) { 929 return Math.sinh(number); 930 } 931 932 // Todo: Skew Returns the skewness of a distribution. Skewness characterizes 933 // the degree of asymmetry of a distribution around its mean. Positive 934 // skewness indicates a distribution with an asymmetric tail extending 935 // toward more positive values. Negative skewness indicates a distribution 936 // with an asymmetric tail extending toward more negative values. 937 938 // Todo: Sln Returns the straight-line depreciation of an asset for one 939 // period. 940 941 // Todo: Slope Returns the slope of the linear regression line through data 942 // points in known_y's and known_x's. The slope is the vertical distance 943 // divided by the horizontal distance between any two points on the line, 944 // which is the rate of change along the regression line. 945 946 // Todo: Small Returns the k-th smallest value in a data set. Use this 947 // function to return values with a particular relative standing in a data 948 // set. 949 950 951 @FunctionName("SqrtPi") 952 @Description("Returns the square root of (number * pi).") 953 public static double sqrtPi(double number) { 954 return Math.sqrt(number * Math.PI); 955 } 956 957 // Todo: Standardize Returns a normalized value from a distribution 958 // characterized by mean and standard_dev. 959 960 // Todo: StDev Estimates standard deviation based on a sample. The standard 961 // deviation is a measure of how widely values are dispersed from the 962 // average value (the mean). 963 964 // Todo: StDevP Calculates standard deviation based on the entire population 965 // given as arguments. The standard deviation is a measure of how widely 966 // values are dispersed from the average value (the mean). 967 968 // Todo: StEyx Returns the standard error of the predicted y-value for each 969 // x in the regression. The standard error is a measure of the amount of 970 // error in the prediction of y for an individual x. 971 972 // Todo: Substitute Substitutes new_text for old_text in a text string. Use 973 // SUBSTITUTE when you want to replace specific text in a text string; use 974 // REPLACE when you want to replace any text that occurs in a specific 975 // location in a text string. 976 977 // Todo: Subtotal Creates subtotals. 978 979 // Todo: Sum Adds all the numbers in a range of cells. 980 981 // Todo: SumIf Adds the cells specified by a given criteria. 982 983 // Todo: SumIfs Adds the cells in a range that meet multiple criteria. 984 985 // Todo: SumProduct Multiplies corresponding components in the given arrays, 986 // and returns the sum of those products. 987 988 // Todo: SumSq Returns the sum of the squares of the arguments. 989 990 // Todo: SumX2MY2 Returns the sum of the difference of squares of 991 // corresponding values in two arrays. 992 993 // Todo: SumX2PY2 Returns the sum of the sum of squares of corresponding 994 // values in two arrays. The sum of the sum of squares is a common term in 995 // many statistical calculations. 996 997 // Todo: SumXMY2 Returns the sum of squares of differences of corresponding 998 // values in two arrays. 999 1000 // Todo: Syd Returns the sum-of-years' digits depreciation of an asset for a 1001 // specified period. 1002 1003 1004 @FunctionName("Tanh") 1005 @Description("Returns the hyperbolic tangent of a number.") 1006 public static double tanh(double number) { 1007 return Math.tanh(number); 1008 } 1009 1010 // Todo: TBillEq Returns the bond-equivalent yield for a Treasury bill. 1011 1012 // Todo: TBillPrice Returns the price per $100 face value for a Treasury 1013 // bill. 1014 1015 // Todo: TBillYield Returns the yield for a Treasury bill. 1016 1017 // Todo: TDist Returns the Percentage Points (probability) for the Student 1018 // t-distribution where a numeric value (x) is a calculated value of t for 1019 // which the Percentage Points are to be computed. The t-distribution is 1020 // used in the hypothesis testing of small sample data sets. Use this 1021 // function in place of a table of critical values for the t-distribution. 1022 1023 // Todo: Text Converts a value to text in a specific number format. 1024 1025 // Todo: TInv Returns the t-value of the Student's t-distribution as a 1026 // function of the probability and the degrees of freedom. 1027 1028 // Todo: Transpose Returns a vertical range of cells as a horizontal range, 1029 // or vice versa. TRANSPOSE must be entered as an array formula in a range 1030 // that has the same number of rows and columns, respectively, as an array 1031 // has columns and rows. Use TRANSPOSE to shift the vertical and horizontal 1032 // orientation of an array on a worksheet. 1033 1034 // Todo: Trend Returns values along a linear trend. Fits a straight line 1035 // (using the method of least squares) to the arrays known_y's and 1036 // known_x's. Returns the y-values along that line for the array of new_x's 1037 // that you specify. 1038 1039 // Todo: Trim Removes all spaces from text except for single spaces between 1040 // words. Use TRIM on text that you have received from another application 1041 // that may have irregular spacing. 1042 1043 // Todo: TrimMean Returns the mean of the interior of a data set. TRIMMEAN 1044 // calculates the mean taken by excluding a percentage of data points from 1045 // the top and bottom tails of a data set. You can use this function when 1046 // you wish to exclude outlying data from your analysis. 1047 1048 // Todo: TTest Returns the probability associated with a Student's 1049 // t-Test. Use TTEST to determine whether two samples are likely to have 1050 // come from the same two underlying populations that have the same mean. 1051 1052 // Todo: USDollar The description for this item will appear in the final 1053 // release of Office 2007. 1054 1055 // Todo: Var Estimates variance based on a sample. 1056 1057 // Todo: VarP Calculates variance based on the entire population. 1058 1059 // Todo: Vdb Returns the depreciation of an asset for any period you 1060 // specify, including partial periods, using the double-declining balance 1061 // method or some other method you specify. VDB stands for variable 1062 // declining balance. 1063 1064 // Todo: VLookup Searches for a value in the first column of a table array 1065 // and returns a value in the same row from another column in the table 1066 // array. 1067 1068 // Todo: Weekday Returns the day of the week corresponding to a date. The 1069 // day is given as an integer, ranging from 1 (Sunday) to 7 (Saturday), by 1070 // default. 1071 1072 // Todo: WeekNum Returns a number that indicates where the week falls 1073 // numerically within a year. 1074 1075 // Todo: Weibull Returns the Weibull distribution. Use this distribution in 1076 // reliability analysis, such as calculating a device's mean time to 1077 // failure. 1078 1079 // Todo: WorkDay Returns a number that represents a date that is the 1080 // indicated number of working days before or after a date (the starting 1081 // date). Working days exclude weekends and any dates identified as 1082 // holidays. Use WORKDAY to exclude weekends or holidays when you calculate 1083 // invoice due dates, expected delivery times, or the number of days of work 1084 // performed. 1085 1086 // Todo: Xirr Returns the internal rate of return for a schedule of cash 1087 // flows that is not necessarily periodic. To calculate the internal rate of 1088 // return for a series of periodic cash flows, use the IRR function. 1089 1090 // Todo: Xnpv The description for this item will appear in the final release 1091 // of Office 2007. 1092 1093 // Todo: YearFrac Calculates the fraction of the year represented by the 1094 // number of whole days between two dates (the start_date and the 1095 // end_date). Use the YEARFRAC worksheet function to identify the proportion 1096 // of a whole year's benefits or obligations to assign to a specific term. 1097 1098 // Todo: YieldDisc Returns the annual yield for a discounted security. 1099 1100 // Todo: YieldMat Returns the annual yield of a security that pays interest 1101 // at maturity. 1102 1103 // Todo: ZTest Returns the one-tailed probability-value of a z-test. For a 1104 // given hypothesized population mean, ZTEST returns the probability that 1105 // the sample mean would be greater than the average of observations in the 1106 // data set (array) -- that is, the observed sample mean. 1107 1108} 1109 1110// End Excel.java


PERCENTILE()
PERCENTILE(numArray, n, method) → percentile
Return the nth percentile of the values in numArray.
- numArray (array): an array of numbers, null values are ignored
- n (number): must be between 0 (excluded) and 100 (included)
- method (string, optional): "rank" (default) or "interpolation"
- returns percentile (number|null): the nth percentile, or null if the
array is empty or only null values are contained in it or the percentile
cannot be calculated
PERCENTILE( [1, 2, 3, 4], 50 )
PERCENTILE( [1, 2, 3, 4], 50, "rank" )
PERCENTILE( [1, 2, 3, 4], 50, "interpolation" )


Module jumper.core.node
The node
class.
The node class represents a cell on a collision map. Basically, for each single cell in the collision map passed-in upon initialization, a node object would be generated and then stored within the grid object.
In the following implementation, nodes can be compared using the <
operator. The comparison is
made on the basis of their f
cost. From a processed node, the pathfinder would expand the search
to the next neighbouring node having the lowest f
cost. This comparison is internally used within the
open list heap
to quickly sort all nodes queued inside the heap.
Info:
- Copyright: 2012-2013
- License: MIT
- Author: Roland Yonaba
Functions
| node:new (x, y) | Inits a new node object |
Tables
| node | Internal node Class |
Functions
- node:new (x, y)
-
Inits a new node object
Parameters:
- x int the x-coordinate of the node on the collision map
- y int the y-coordinate of the node on the collision map
Returns:
Tables
- node
-
Internal node Class
Fields:
- x the x-coordinate of the node on the collision map
- y the y-coordinate of the node on the collision map


Q : Why i updated instagram app, i can not use your app to unfollow users?
A : Instagram new version has changed the unfollow action, you can not unfollow more than 10 users in short time. You should use old version instagram app, before the version of 112 at least.
Q : When i use this app, what should i do?
A : After unfollow 20 or 30 users in this app, you can open instagram app to click anywhere, for example, follow or unfollow anyone, watch a picture or video. After do it, open this app, continue to unfollow users. This action is cyclic. Of course, you can click "open news" to review news after unfollow 30 users. After few minutes, continue to unfollow users.
Q : Why i unfollow users only 10 at once?
A : Unfollow 10 users at once is to help you reduce your unfollowing speed. This action is to help your account would not be locked by instagram.
Q : I paid for this app, what i can get?
A : If you click "remove ads" button, then you paid for remove the ads in the app, it means you can use this app without ads.
Q : I login this app with my account, do you get my account?
 We have no services to get anything, so when you open this app, you will wait few minutes to get users from instagram.
Q : when i unfollow user, the app show "unfollow fail", how to fix it?
A : You can open your instagram app, click anywhere to make sure your instagram account is ok, then open the app to unfollow again. If it not work, you can login the app again. the "logout" button is at the right top in the main page.
Q : I can not unfollow users by this app, but i can follow or unfollow by instagram app, can you help me?
 You should change your password, and you should use this app to unfollow users after a week. Before you click "unfollow 10" button, you can click "unfollow" button to test unfollow user action is ok or not.
Q : when i open the app, it show "Failed to connection, please check your network", how to fix it?
A : First, you should make sure your network is ok. Then you can open your instagram app, click anywhere to make sure your instagram account is ok, then open the app to unfollow again. If it not work, you can login the app again. the "logout" button is at the right top in the main page.
Q : Why my instagram account was locked by instagram?
 If you want to avoid that happen, you should not unfolow users more than 100 in a short time. After unfollow 20 or 30 users in this app, you can open instagram app to click anywhere, for example, follow or unfollow anyone, watch a picture or video. After do it, open this app, continue to unfollow users. Of course, you can click "open news" to review news after unfollow 30 users. After few minutes, continue to unfollow users.
njxkd2018@gmail.com


labeled
by None at 2021-02-10 02:18:13.Derivatives for two WAV files hadn't run. I'm not sure why - I just clicked each track that's a part of that playlist until one had a broken viewer, then went into the file manager and found the ones that didn't have HLS derivatives generated and regenerated derivatives for those.
labeled
by Trey Pendragon at 2021-02-09 17:41:06.assigned
by Trey Pendragon at 2021-02-09 17:41:07.closed
by Trey Pendragon at 2021-02-09 18:02:15.referenced
by None at 2021-02-09 13:57:29.merged
by None at 2021-02-09 13:57:29.closed
by None at 2021-02-09 13:57:30.head_ref_deleted
by None at 2021-02-09 13:57:30.assigned
by None at 2021-02-09 14:53:23.Coverage remained the same at 82.944% when pulling b398a79388c4ce2e587aaba1a1846306d9cb1a00 on landosolrconfigxml_v3 into 22242c664e17de3e4a0926d9fef7e53318948c73 on alma.
referenced
by None at 2021-02-09 15:56:52.merged
by None at 2021-02-09 15:56:52.closed
by None at 2021-02-09 15:56:52.head_ref_deleted
by None at 2021-02-09 15:56:53.Coverage increased (+0.4%) to 82.944% when pulling 590c0712fe4b04114c69ce9998c7e7238ebfb858 on alma into 6bd9ab6f3c077aa56df129e003101b28e07ff3ce on main.
assigned
by Hector Correa at 2021-02-09 16:47:11.I've submitted at PR that will allow us to download a specific set of config files e.g. production vs staging, and another PR that fixes the config in the staging files.
If that works, then I can submit a separate PR to fix the production and production-alt environments.
The config in catalog-staging
in pulsolr has been fixed in https://github.com/pulibrary/pulsolr repo. I still need to update catalog-production
and catalog-production-alt
.
@hackartisan what config files do we want to keep in the ./solr/config
folder of this (marc_liberation) repo? A copy of catalog-staging, catalog-production, or catalog-production-alt ?
@hectorcorrea On a broad time scale there shouldn't be a difference between the 3; they exist for short-term discrepancies (i.e. testing config changes or index migration needs). Probably makes sense to use whichever one the catalog is currently running in production (looks like catalog-production-alt, although that one should be identical to catalog-production).
mentioned
by None at 2021-02-09 16:55:23.subscribed
by None at 2021-02-09 16:55:23.mentioned
by Hector Correa at 2021-02-09 16:59:06.subscribed
by Hector Correa at 2021-02-09 16:59:06.closed
by Trey Pendragon at 2021-02-09 18:11:58.assigned
by James R. Griffin III at 2021-02-09 18:27:57.there is an ongoing work for this one if someone else takes over. #1033
unassigned
by Christina Chortaria at 2021-02-09 19:44:47.labeled
by None at 2021-02-09 20:13:30.labeled
by None at 2021-02-09 20:22:38.renamed
by None at 2021-02-09 20:25:21.renamed
by None at 2021-02-09 20:43:50.renamed
by None at 2021-02-09 20:45:35.labeled
by None at 2021-02-09 21:13:08.assigned
by Trey Pendragon at 2021-02-09 22:01:36.referenced
by Trey Pendragon at 2021-02-09 22:18:28.Working on this using https://github.com/pulibrary/alma_rb/commit/4aafe40f5145257897ded4c56555b5643ee61d95
current bibdata courses fields. { "reservelistid": 8332, "departmentname": "Mathematics", "departmentcode": "MAT", "coursename": "Complex Analysis with Applications", "coursenumber": "MAT 330", "sectionid": 0, "instructorfirstname": "Javier", "instructorlast_name": "Gómez-Serrano" }]
Alma courses fields: [{ "id": "2703155000006421", "code": "000", "name": "GSG", "section": "", "academicdepartment": { "value": "GSG-246", "desc": "GSG" }, "processingdepartment": { "value": "COURSEUNIT", "desc": "Course Unit" }, "status": "ACTIVE", "startdate": "2020-08-31Z", "enddate": "2021-01-31Z", "weeklyhours": 0, "participants": 0, "year": "", "instructor": [], "campus": [], "note": [], "createdby": "EXLIBRIS", "createddate": "2020-12-08Z", "lastmodifiedby": "System", "lastmodifieddate": "2020-12-08Z", "rolledfrom": "", "link": "https://api-na.hosted.exlibrisgroup.com/almaws/v1/courses/2703155000006421" }]
assigned
by Christina Chortaria at 2021-02-09 19:02:51.referenced
by Christina Chortaria at 2021-02-09 22:28:01.Coverage increased (+0.04%) to 82.979% when pulling f2487e677152dbf991d5a0f0791999945716702a on scsbnonnumeric_fields into 590c0712fe4b04114c69ce9998c7e7238ebfb858 on alma.
So I think I've parsed this code mentally and, for 856s at least, I don't think we have to do anything.
As evidence: https://catalog-alma-qa.princeton.edu/catalog/9946093213506421 That record indexes and looks fine. Well, the link to the #view is wrong, but that's probably a different ticket caused by https://github.com/pulibrary/marc_liberation/blob/6bd9ab6f3c077aa56df129e003101b28e07ff3ce/marc_to_solr/lib/orangelight_url_builder.rb#L20
which would also just be fixed when Figgy's pointing at the new IDs.
assigned
by Trey Pendragon at 2021-02-09 18:06:50.unassigned
by Trey Pendragon at 2021-02-09 22:01:29.assigned
by Trey Pendragon at 2021-02-09 22:31:19.head_ref_deleted
by None at 2021-02-09 12:49:47.head_ref_deleted
by None at 2021-02-09 12:49:49.head_ref_deleted
by None at 2021-02-09 12:49:50.head_ref_deleted
by None at 2021-02-09 12:49:58.head_ref_deleted
by None at 2021-02-09 12:49:59.referenced
by Kevin Reiss at 2021-02-09 20:11:15.merged
by Kevin Reiss at 2021-02-09 20:11:15.closed
by Kevin Reiss at 2021-02-09 20:11:15.head_ref_deleted
by Kevin Reiss at 2021-02-09 20:11:16.referenced
by Kevin Reiss at 2021-02-09 20:11:49.merged
by Kevin Reiss at 2021-02-09 20:11:49.closed
by Kevin Reiss at 2021-02-09 20:11:50.head_ref_deleted
by Kevin Reiss at 2021-02-09 20:11:50.head_ref_force_pushed
by Francis Kayiwa at 2021-02-08 22:59:32.referenced
by Francis Kayiwa at 2021-02-09 00:54:33.merged
by Francis Kayiwa at 2021-02-09 00:54:33.closed
by Francis Kayiwa at 2021-02-09 00:54:33.head_ref_deleted
by Francis Kayiwa at 2021-02-09 00:54:34.closed
by None at 2021-02-09 19:21:44.head_ref_force_pushed
by None at 2021-02-09 19:24:19.ready_for_review
by None at 2021-02-09 19:57:20.referenced
by Kevin Reiss at 2021-02-09 20:10:50.merged
by Kevin Reiss at 2021-02-09 20:10:50.closed
by Kevin Reiss at 2021-02-09 20:10:50.head_ref_deleted
by Kevin Reiss at 2021-02-09 20:10:51.head_ref_force_pushed
by None at 2021-02-09 21:51:49.head_ref_force_pushed
by None at 2021-02-09 21:53:48.head_ref_force_pushed
by Axa Mei Liauw at 2021-02-09 21:49:36.referenced
by Kevin Reiss at 2021-02-09 21:54:47.merged
by Kevin Reiss at 2021-02-09 21:54:47.closed
by Kevin Reiss at 2021-02-09 21:54:47.deployed
by Trey Pendragon at 2021-02-09 14:47:01.referenced
by Christina Chortaria at 2021-02-09 14:51:11.merged
by Christina Chortaria at 2021-02-09 14:51:11.closed
by Christina Chortaria at 2021-02-09 14:51:12.referenced
by None at 2021-02-09 13:58:40.merged
by None at 2021-02-09 13:58:40.closed
by None at 2021-02-09 13:58:40.head_ref_deleted
by Hector Correa at 2021-02-09 19:19:48.referenced
by None at 2021-02-09 20:03:43.merged
by None at 2021-02-09 20:03:44.closed
by None at 2021-02-09 20:03:44.head_ref_deleted
by Hector Correa at 2021-02-09 20:11:16.Actually, sorry, this is not resolved as other component-specific notes and elements are not displaying; rather collection-level elements and notes appear. For example, see https://findingaids-beta.princeton.edu/catalog/C0140_c03411 and https://findingaids.princeton.edu/collections/C0140/c03411, specifically creator, acquisition, and names and subjects. Related matter: the subjects associated with this specific component appear in the Find Related Materials as opposed to the record/main body of the page. Find Related Materials should only have the collection-level subjects.
Thank you for the example!
So "Find Related Materials" should only have collection-level subjects, and the component page should have the subjects for that component? I'm gonna make another ticket for that.
Yes, I guess so since those tabs at the top should only have collection-level notes. Thanks.
reopened
by None at 2021-02-08 23:16:33.labeled
by Trey Pendragon at 2021-02-08 23:32:01.Hmm now the results for Frederick Vinton are slightly different. There are now 4 results on each site; however these are the results on pulfalight, and the resulting list on the current site includes these collections. Aside from the 3 that overlap, pulfalight includes MC248- I'm not sure where his name shows up-and pulfa 2 includes AC123, which seems more relevant.
AC123 matches in PULFA2 because of a bioghist note which doesn't seem to be in aspace. See https://findingaids.princeton.edu/collections/AC123#description.
MC248 I think is matching because there are authors in there with both Frederick and Vinton in their names, they're just not super close. I'm not sure why it's ranked higher than TC011.
Ah, right. The bioghist notes are now associated with agent records; however we want those notes to be displayed and searchable in finding aids too. Is that doable?
Yeah this is because they're in the EAD as both creator and collector. Should we make sure not to index collectors?
Hmm, it shouldn't be listed in the finding aid as both so perhaps something that needs to be remedied in ASpace? There will be cases when the creator and collector differ so not indexing the collectors wouldn't work.
I can either put them in different display fields (Collector: yada yada, Creator: yada yada), or I can keep them both in creator and make it so there's only unique strings. Which would you prefer? Also, blocking release?
Yeah, I guess display in different fields. Not sure why that data would be in ASpace twice though in this specific case, and whether this might be a larger issue. And no, don't think so?
Yeah in this case it may be a migration issue. https://aspace.princeton.edu/staff/resources/3950#tree::resource_3950 is the resource (mss repository)
Ok, I see. This might need review later on; but yeah, for now I think displaying them in different fields makes sense. Thanks. (And ok, I'm signing off now, dammit! haha)
milestoned
by None at 2021-02-08 23:19:09.renamed
by Trey Pendragon at 2021-02-08 23:38:03.renamed
by Trey Pendragon at 2021-02-08 23:38:50.labeled
by Trey Pendragon at 2021-02-09 18:46:49.assigned
by Trey Pendragon at 2021-02-09 18:46:50.labeled
by Trey Pendragon at 2021-02-09 21:53:55.renamed
by Axa Mei Liauw at 2021-02-09 16:02:14.Resolved: OAR is back up in 79b5578
.
labeled
by Francis Kayiwa at 2021-02-09 07:00:28.labeled
by Francis Kayiwa at 2021-02-09 07:00:28.locked
by Francis Kayiwa at 2021-02-09 07:00:29.closed
by Francis Kayiwa at 2021-02-09 07:23:12.Resolved: Confluence is back up in 0ae32b7
.
labeled
by Francis Kayiwa at 2021-02-10 02:03:26.labeled
by Francis Kayiwa at 2021-02-10 02:03:26.locked
by Francis Kayiwa at 2021-02-10 02:03:27.closed
by Francis Kayiwa at 2021-02-10 02:24:39.


var alfa = 1 + '2' + 3;
var bravo = 3 - '2' + 1;
What is alfa - bravo
?
var alfa = 1 + '2' + 3;
var bravo = 3 - '2' + 1;
What is alfa - bravo
?
ACCESS GRANTED
JavaScript uses weak typing and type coercion. If only plus operators (+) are present, numbers and strings are concatenated into a string. With the presence of a minus operator (-), strings are coerced to numbers.
ACCESS DENIED
JavaScript uses weak typing and type coercion. If only plus operators (+) are present, numbers and strings are concatenated into a string. With the presence of a minus operator (-), strings are coerced to numbers.


Creating a Lightning Service
When you develop in Lightning your client side architecture can benefit as much as the server from a separation of concerns. The component library is testimony to that.
Out of the box services
The Component Library features a growing number of services:
- Lightning Data Service, the workhorse of creating, loading and saving Salesforce records. One specialty: it doesn't have its own component, but surfaces through force:RecordData, lightning:recordEditForm, lightning:recordViewForm and lightning:recordForm
- Overlay Library to show modals and popovers
- Notification Library to show notices and toasts
- Omni Toolkit API for accessing OmniChannel capabilities
- Navigation Item API to move around in lightning
- Conversation Toolkit API to interact with chat
- Quick Action API accessing quick actions
- Workspace API to access console app tabs and subtabs
- Utility Bar API to access the utility bar
- Emp API to subscribe to streaming events
Building your own
There is more than one way to skin you cat. You can do:
- Lightning Style
Philippe Ozil described in detail how to use and create your own services 'lightning style'. You should check out his Server Side Actions Service that allows you cut down on boiler plate code substantially - JavaScript Style
Establish a global service extending the Window object - ES6 Style
Import a JavaScript module. This would need to setup Babel - not too practical for now
Extending the window object
When you extend the window object, which is the browser's top level object, the service becomes available "standalone", like alert()
(which is actually window.alert()
). A service could look like this:
window.demoLib = ( function() {
let someMethod = () => {
return 'Something'
}
let helloMethod = (paul) => {
return `Hello ${paul}`;
}
return {someMethod, helloMethod};
}());
This will now provide you with demoLib.someMethod()
returning Something and demoLib.helloMethod('World')
returning "Hello World". The final step to enable such a library is to add ltng:require to your components: <ltng:require scripts="{!Resource.demoLib} afterScriptLoaded="someMethodIfRequired" />
presuming you stored your JS in resources as demoLib.js
. The Aura framework will make sure that the library is loaded once only, regardless how many components define it as dependency.
What can go wrong?
There are a few caveats:
- For hard core Apex developers: JavaScript is case sensitive
- You need to be clearly communicating service names to other developers in your org. If someone has the idea to name a library the same as yours, things will break. Good practice is to check if your library and function is available:
if (window.demoLib && window.demoLib.someMethod) {...}
- Fat arrow functions
() => {...}
are not supported in legacy browsers, so you need the slightly more verbosefunction(){...}
(beware thethis
keyword behaves different then).
As usual YMMV
Posted by Stephan H Wissel on 19 October 2018 | Comments (0) | categories: JavaScript Lightning Salesforce


Speakers
- Fake Person
- Fake Person
- Fake Person
Schedule
- 9:00 AM - Breakfast
- Probably pancakes
- 10:00 AM - Speakers
- Learning happens
- 8:00 PM - Party
- Then go to bed
Tickets
Going fast buy buy buy!
A fake conference all about offline capabilities in fakesville, fakerton.
If you've been here at least once in a browser that supports `serviceWorker` you'll be able to load it offline. Read the article or check out the repo.
Going fast buy buy buy!


11/14/19
In the past year, massive amounts of the Amazon rainforest have been destroyed. According to Brazil’s National Institute for Space Research, 3769 square miles of rainforest were lost to deforestation in a twelve month period ending in July. marking the highest rate of deforestation since 2008.
4/26/19
Amazon wildlife trade has been an issue for a long time, creating concern with the survival of species in the rainforest. In the Brazilian Amazon, wild animals are trapped by indigenous people. Once captured, the animals, either dead or alive, are passed on to numerous middlemen.
2/4/19
Over the past few months, the Amazon rainforest has been inflicted with dangerous wildfires, impacting animal’s habitats. The fires have began to diminish as of September, but the damage has had global repercussions. These fires may contribute to climate change, since the Amazon has the ability to absorb more than 20% of the earth’s carbon dioxide and release oxygen.


(). virus coronavirus respiratory MERS-CoV novel SARS-CoV- human remdesivir therapeutic {border-style influenza SARS-CoV px;} #ffffff;} clinical patients viral antiviral syndrome infections acute efficacy potential severe treatment disease shown tissue East Middle RNA infection model protease replication results associated new protein px; spike studies {font-family However, Med:â€". antibody cases combination coronaviruses effective font-size lung monoclonal prophylactic reduced targeting Agents HaydenFG, LPV/RTVâ€"IFN-Î² TLR activity compounds coronaviruses, doi:./S-()-. double; high host infected infection. infections. pneumonia receptor remains ribavirin target trial CihlarT, Lancet:â€". MERS-CoV. Nevertheless, Remdesivir animal antibodies bat border-color border-width cells compound different epidemic. highly inflammatory inhibitors mice mouse nucleotide phase posting reported solid; treating type use {font-style {font-weight Antimicrob Antiviral ChanKH, Coronavirus Engl FengJY, JordanR, Moreover, Mullerâ€™s Novel SARS-CoV-. Sci SimsAC, TMPRSS Van activation active alternatives bold cell cellular confirmed control controlled courier; culture current did doi:./NEJMoa. doi:./s---. em; emerging entry epidemic example, fighting fitness genetic immunosuppressants improved inhibits initiated interferon mutation observed outbreak polyclonal previously promising pt;} randomized rate reduces rhesus sequence serine showed significantly species stop suggested therapy virus,


New contributor guide
This is a guide for new comers who wants to contribute to Dubbo.
Subscribe to the mailing list
The mailing list is the recommended way for discussing almost anything that related to Dubbo. Please refer to this issue for detailed documentation on how to subscribe.
To subscribe to the following mailing list, please refer to Mailing list subscription guide
-<EMAIL_ADDRESS>the develop mailing list, you can ask question here if you have encountered any problem when using or developing Dubbo.
-<EMAIL_ADDRESS>all the commits will be sent to this mailing list. You can subscribe to it if you are interested in Dubbo's development.
-<EMAIL_ADDRESS>all the JIRA issues and updates will be sent to this mailing list. The Dubbo community has decided to use github issues rather than JIRA issues, therefore it is expected that most of the issues will be tracked by github issues. The JIRA issues are used to track ASF related issues.
Reporting issue
You can always reporting an issue to Dubbo via Github Issues.
If you are reporting bugs, please refer to the issue report template.
If you are reporting regualur issues, like raise an question, you can open an regular issue
Sending pull request
- Follow the checklist in the pull request template
- Before you sending out the pull request, please sync your forked repository with remote repository, this will make your pull request simple and clear. See guide below:
git remote add upstream git@github.com:apache/dubbo.git
git fetch upstream
git rebase upstream/master
git checkout -b your_awesome_patch
... add some work
git push origin your_awesome_patch
Code convention
Please check the CONTRIBUTING.md for code convention.
Participate in the release vote
Participate in the release vote is an important way to contribute to Dubbo. The Dubbo community welcomes everyone to partipate, you can check the release vote using this check list. If you have any question regarding the check list, please feel free to ask on<EMAIL_ADDRESS>What can I contribute?
- Take a look at issues with tag called
Good first issue
orHelp wanted
. - Join the discussion on mailing list, subscription guide.
- Answer questions on issues.
- Fix bugs reported on issues, and send us pull request.
- Review the existing pull request.
- Improve the website, typically we need
- blog post
- translation on documentation
- use cases about how Dubbo is being used in enterprise system.
- Improve the dubbo-admin/dubbo-monitor.
- Contribute to the projects listed in ecosystem.
- Any form of contribution that is not mentioned above.
- If you would like to contribute, please send an email to<EMAIL_ADDRESS>to let us know!


David Unsworth backs Dennis Adeniran to continue improving at Everton
The talented midfielder has been in good form for Everton’s youngsters this season.
by Mathew NashEverton under-23 manager David Unsworth has been singing the praises of young talent Dennis Adeniran, suggesting training with the first-team has helped him develop into a better player.
Adeniran, along with the likes of Anthony Gordon and Lewis Gibson, has been training with the Everton first-team this season.
It has seemingly been apparent to Everton’s under-23 boss that the process has helped Adeniran develop into a better player. As he told the Liverpool Echo, the youngster has plenty of potential to continue growing into a top player.
“Without a doubt (training with the first-team has helped), certainly from a tactical point of view.
“He’s a great athlete and has got great power and pace but what we’ve tried to do is teach him the game defensively as a central midfielder. That’s something with young players that takes a little bit of time.
“…There’s loads of development left in Dennis and loads of opportunities for him to get better. He’s another player that is a work in progress to get him in the first-team.”
TBR’s View
Everton fans were excited when the club snapped up Adeniran from Fulham in September 2017. As reported by Sky Sports, the deal to bring him to Finch Farm to continue his development could eventually cost Everton a fee in the region of £4 million. Such a fee was a testament to the first-team breakthrough he had made at Craven Cottage.
However, he is yet to feature for the Everton first-team and injury blighted his first campaign at the club.
 Hopefully, he can continue to develop in the weeks and months to come.
Have something to tell us about this article?
Let us know


UDI Polyglot v2
Polyglot is a Middleware between the Universal Devices ISY Home Automation device and any number of external devices and services.
Polyglot v2 is built on the MEAN stack which is a production ready enterprise level code stack that includes:
- MongoDB (A NoSQL database engine that stores data in JSON formated 'documents')
- Express (NodeJS HTTP API server module)
- Angular.JS (Frontend framework developed by Google)
- NodeJS (Fully asynchronous server side version of Javascript)
Using these tools, along with the MQTT messaging protocol, we have created a robust IoT powerhouse that can speak to any and every device available with open API standards using simple, straight-forward modules (NodeServers).
While most of the previous code had been written in Python, the event loop driven Node.JS was chosen for this platform due to its asynchronous nature. Python or ANY language can still be used to develop a NodeServer with the standard API interface available.
Installation instructions
Since Polyglot is an enterprise level application there are several steps to get it up and running, this will be an ongoing process in order to simplify it. These steps are outlined directly for the Raspberry Pi, specifically the 3 or 3b models which were used to test. This has also worked on the original Raspberry Pi (Armv6) as well. A pre-built script is here to do all the heavy lifting for you. This install procedure was tested using a clean install of Rasbian Stretch Lite. Version September 2017 at time of writing.
To Install Using the script (This will do EVERYTHING for you):
# Run the Install Script
wget -qO - https://github.com/Einstein42/udi-polyglotv2/raw/master/scripts/install.sh | bash
You do NOT need to proceed with theses instructions if you ran the script above. This is all done for you.
The manual steps are listed here as well.
Steps overview:
- Install MongoDB
- Install Polyglot-v2
Prerequisites
# Update your sources
sudo apt-get update -qy
# Install the MongoDB Server / git / Python3 / Curl
sudo apt-get -qqy install mongodb-server git python3-pip python3-dev curl
# Check MongoDB Status
systemctl status mongodb
● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled)
Active: active (running) since Thu 2017-07-13 03:35:41 UTC; 25min ago
Docs: man:mongod(1)
Main PID: 431 (mongod)
CGroup: /system.slice/mongodb.service
└─431 /usr/bin/mongod --config /etc/mongodb.conf
Polyglot
Now the good stuff. Let's install Polyglot! Login as the user that is going to run Polyglot (pi or whatever you choose). Polyglot does NOT need to be run as root! (PLEASE DO NOT RUN POLYGLOT AS ROOT)
# Create a polyglot directory
mkdir polyglot
# Enter polyglot directory
cd polyglot
# Get the Polyglot binary. This example is for armv7 Raspberry Pi 3/3b. (armv6 is RPi 1/Nano and x64 is most x86 linux boxes)
# If you don't know which one to get run the command 'lscpu' and look at the top line. 'Architecture'
wget -q https://github.com/Einstein42/udi-polyglotv2/raw/master/binaries/polyglot-v2-linux-armv7.tar.gz
# Extract the archive
tar -zxf polyglot-v2-linux-armv7.tar.gz
# Run Polyglot normally:
./polyglot-v2-linux-armv7
# OR
# Run Polyglot with debug logging turned on:
NODE_ENV=development ./polyglot-v2-linux-armv7
To start Polyglot on Boot do the following:
# Get base systemd script from the GitHub repository
wget -q https://github.com/Einstein42/udi-polyglotv2/raw/master/scripts/polyglot-v2.service
# Edit it for your system
nano polyglot-v2.service
# Modify the following sections in the polyglot-v2.service file
# Replace <PWD> with the current directory that the polyglot binary resides in.
# Replace <USER> with the user you want polyglot to run as
# Replace <FILE> with the FULL path to the polyglot binary. e.g. /home/pi/polyglot/polyglot-v2-linux-armv7
# One the above changes are done to the polyglot-v2.service file, move it to the systemd unit folder
sudo mv polyglot-v2.service /lib/systemd/system/
# Add the service then start polyglot-v2
sudo systemctl enable polyglot-v2
sudo systemctl start polyglot-v2
Verify that Polyglot is running
# Check Polyglot status
sudo systemctl status polyglot-v2.service
● polyglot-v2.service - polyglot-v2
Loaded: loaded (/lib/systemd/system/polyglot-v2.service; enabled)
Active: active (running) since Thu 2017-07-13 04:38:53 UTC; 10min ago
Main PID: 1647 (node)
CGroup: /system.slice/polyglot-v2.service
└─1647 node /usr/local/bin/polyglot-v2
Jul 13 04:38:53 raspberrypi systemd[1]: Started polyglot-v2.
Default username and password are both admin
Logs are located at ~/.polyglot/log/debug.log
# Watch the logs real-time
tail -f ~/.polyglot/log/debug.log
7/13/2017, 4:24:15 AM - info: Starting Polyglot version 2.0
7/13/2017, 4:24:15 AM - info: MongoDB: Connected
7/13/2017, 4:24:16 AM - info: MQTT Services Started.
7/13/2017, 4:24:16 AM - info: Secure Server started on port 3000
7/13/2017, 4:24:16 AM - info: ISY: Got Version 5.0.10
7/13/2017, 4:24:16 AM - info: MQTT: Subscribe Successful udi/polyglot/connections/# QoS: 0
7/13/2017, 4:24:38 AM - info: Successful login by admin
7/13/2017, 4:24:39 AM - info: MQTT: Frontend Websockets interface Connected.
Enable debug logging for Polyglot
# Edit the ~/.polyglot/.env file
nano ~/.polyglot/.env
# Add or modify the NODE_ENV variable
NODE_ENV=development
Development Documentation
It is pre-built in the docs folder Found Here on GitHub in HTML format if you clone the repository or available in the
Online Documentation Found Here.
Prebuilt Python3 interface API for building NodeServers is here.
NodeJS interface API for building NodeServers is coming soon.


August 2017
Can the performance of a message-oriented system be improved by adding periods of idle execution?
A period of time required for the scheduler to switch the CPU from one actor to another.
Spinning before a context switch potentially improves performance.
But not always.
An actor should delay the context switch only if it is likely that a message will arrive.
1. When should an actor spin?
2. How long should an actor spin?
There exists a simple upper bound.
d (delay) < c (context switch)
How to pick a delay in [0, c>?
Assume that P is the probability that a message arrives after some time d.
The actor also needs to occasionally sample P, i.e. spin several times to determine P.
We will assume that the actor samples with some probability φ.
Conclusion: given a probability p that a message arrives after δ, an actor should delay the context switch if:
δ < p
Before the context switch:
1. With probability φ << 1, spin c time.
2. Record the message arrival times ti.
3. After collecting N samples, group the delay times into M buckets, and report the pairs δi, pi.
Before a context switch:
1. Take the last reported M pairs δi, pi.
2. Pick the pair with minimal δi - pi.
3. If the difference is positive, wait δi time before context switching.
For 95% confidence that the sampled probability P lies within 15% of its true value, we need n = 43.
For a sampling probability φ = 0.01, the expected number of activations per actor is ~4300.
But, actors are short-lived.
In many applications, most actors are not activated 4300 times.
How to obtain a sample more quickly?
Always set the sampling frequency φ to a value proportionate to the running best probability pi.
Intuition: If the message arrival probability P is high, then more frequent sampling is not detrimental.
I.e. an actor spends more time sampling, but it is likely that messages will arrive during sampling, saving a context switch.
If the message arrival probability P is low, then less frequent sampling is not detrimental.
I.e. it might take a long time to collect the sample, but it's unlikely that it will help anyway.
Initially, set the sampling frequency to some small value φ0. After each sampling, set the frequency to:
Expected number of messages before obtaining a sample:
Lower bound on speedup:
Shams and Sarkar, AGERE 2014
Ping-Pong
Thread Ring
Fork Join Throughput
Use a spacebar or arrow keys to navigate


Introducing the world¹s first Apple MFi-certified Smart Piano. The ONE Smart Piano is a new and easy way to learn music without paying for private instruction right off the bat. When you attach your smart device the Smart Piano, you can use the app to browse interactive video lessons, LED light-guided sheet music, and piano games. Following the lights, you can start playing your first song in as little as a few minutes.
Standard Pack includes the Piano + Piano Bench
1. Clean only with a soft, dry cloth.
2. Please do not use the cloth soaked with paint thinners, solvents, cleaning solutions or chemicals.
3. Please do not use excessive force on the buttons or switches.
4. The best environment for use is: Temperature: 15 °C ~ 35 °C Humidity: 75%
Note: When specification are subject to change, refer to the actual product.


{% extends "base_error.html" %} {% load i18n static %} {% block title %}{% trans "MITx MicroMasters" %}{% endblock %} {% block error_header %} CURRENTLY UNAVAILABLE {% endblock %} {% block error_content %}
MicroMasters login is unavailable now. Please try again later today.


Sweet Free Stuff
///////////////////////////////////////////
Free Subscription to Oxygen Magazine
Posted: 24 Oct 2014 04:42 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Free Subscription to Oxygen Magazine
The post Free Subscription to Oxygen Magazine appeared first on
SweetFreeStuff.com.
CommentsI just moved! I’m starting out with very, very,VERY LITTLE! Can …
by Jennifer Johnson
///////////////////////////////////////////
Free Cadbury Screme Egg
Posted: 24 Oct 2014 01:11 AM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Save 100% when you buy ONE (1) 1.2 oz. Cadbury Screme Egg. Expires
10/26/2014. Free Cadbury Screme Egg
The post Free Cadbury Screme Egg appeared first on SweetFreeStuff.com.
///////////////////////////////////////////
Free Subscription to Marlin Magazine
Posted: 23 Oct 2014 10:53 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
The post Free Subscription to Marlin Magazine appeared first on
SweetFreeStuff.com.
///////////////////////////////////////////
Free Atkins Quick Start Kit
Posted: 23 Oct 2014 10:13 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Register for the Atkins Community to get your Free Atkins Kit, which
includes a Quick-Start Guide, Atkins Carb Counter 3 Atkins Bars.
The post Free Atkins Quick Start Kit appeared first on SweetFreeStuff.com.
CommentsThank you! I got my quick start kit. by AizeI like it by Bahjet
YousifI have signed up for the Atkins trail 3 times, and have never … by
Eleanor Cooper
///////////////////////////////////////////
Earn Cash and Prizes for Scanning your Purchases - NCP
Posted: 22 Oct 2014 11:01 PM PDT
http://feedproxy.google.com/&edburner&utm_medium=email
Earn Free Cash and Prizes from National Consumer Panel Click Here to Sign
up! As a panel member, the National Consumer Panel will provide you with a
hand-held scanner. Every time you or members of your household shop, youll
use the scanner to scan the barcodes on all of your purchases. Then, once a
[]
The post Earn Cash and Prizes for Scanning your Purchases NCP appeared
first on SweetFreeStuff.com.


@Impl abstract fun onUndo(): Unit
Should be triggered when the user has touched the undo button; navigates back.


Gavin & Stacey Christmas special: Secret first look has Uncle Bryn in meltdown
Eagle-eyed Gavin and Stacey fans have been treated to a first look at the Christmas special thanks to BBC iPlayer.
The cheeky devils over at the series have casually dropped a sneak peek of the new one-off, revealing Uncle Bryn (Rob Brydon) in full on meltdown mode right at the end of season three’s final episode.
With a million dishes on the go and a tight schedule that noone’s sticking to, Bryn, who’s never exactly been one to handle the pressure of any situation, is running ragged around the kitchen.
Advertisement Advertisement
He’s even got a walky-talky for this kind of military operation, because a phone is not efficient enough clearly.
Calling in for back-up from Gwen, Jason or basically anyone at this point, Bryn is getting more panicked as the big dinner prep gets on top of him.
With the plates still at Stacey’s, the table still not set, and a large number of pots getting to literal boiling point on the stove, it’s only a matter of time until Bryn steams up too.
Hearing an almighty crash, Stacey (who was actually setting the table so he was panicking over nothing) and Nessa run into the kitchen to find her kind-hearted uncle on the floor over a smashed plate.
Looks like dinner was going to be a bit late, gang!
It’s fair to say the entire nation is getting excited over the return of the Barry/Billericay collective, which will air pride of place on BBC One on Christmas Day.
Ruth Jones, who plays Nessa and co-wrote the show with James Corden, even got the celebrations off to a flying start by turning up as Nessa to light up the Barry Christmas decorations on Sunday.
Ruth and fellow showrunner James Corden confirmed that the hit series would be making a dramatic comeback for a festive treat after a nine-year hiatus.
Advertisement Advertisement
‘Over the last 10 years we’ve talked a lot about Gavin And Stacey – where they might be today and what their lives might look like,’ they said in a joint statement.
‘And so in secret we took the plunge and wrote this one-hour special.
‘We’ve loved revisiting Barry and Essex again and bringing the characters back together has been a joy.’
Actress Alison Steadman, who plays meme queen Pam Shipman, said that returning for the one-off episode was like a ‘family reunion’.
Gavin and Stacey Christmas Special airs Christmas Day on BBC One.
Got a showbiz story? If you've got a celebrity story, video or pictures get in touch with the Metro.co.uk entertainment team by emailing us<EMAIL_ADDRESS>calling 020 3615 2145 or by visiting our Submit Stuff page - we'd love to hear from you.


Note: This page will not function without JavaScript.
|
Player 0:
1500
1500
|
|
|
Player 1:
1500 Points
1500
|
|
|
Player 2:
1500 Points
1500
|
|
|
Player 3:
1500 Points
1500
|
|
|
Player 4:
1500 Points
1500
|
|
|
Player 5:
1500 Points
1500
|
|
|
Player 6:
1500 Points
1500
|
|
|
Player 7:
1500 Points
1500
|
|
|
|
Player 1:
$1500
|
|
|


FRE TED eR ROT Tee REN mE TET STR PUTTY RI MEET nas Comme a ne
The Techniques of Softening
E.fT.A. Hoffmann's Presentation of the Fantastic
William Swann
PLES MI Eee Ne
1971
A Dissertation Presented to the Faculty of the Graduate School of Yale University
in Candidacy for the Degree of Doctor of Philosophy


PES Solar Solutions
PES Solar Solutions
Loading...
Total Power
Add Panels
Panels
Submit
Sold Power
Add Buyer
Name
Power
Submit
Consumed Power
Kw
Add Consumption
Power
Submit


Usage: sudo [options] COMMAND [ARG...]
If the current user's account is not found in the /etc/sudoers file prints an error message and exits. Otherwise if the current user has a password set by the passwd utility, asks the password, otherwise does not ask the password. Then obtains superuser rights (the sudo program file has the setuid bit set), executes the COMMAND and exits.
sxx
sudo rm /bin/useless.x
| long option | short option | description |
|---|---|---|
| ‑‑help | ‑h | Print help and exit. |


Nimipay
Simple and Secure Crypto Payments Gateway
Add Nimipay to any website and start accepting cryptocurrency, and indirectly credit card payments, in a simple and privacy-focused way. ExamplesBelow are the four examples showing different Nimipay use cases.
Try to open a wallet and buy some fortune cookies.
Open My NIM Wallet

Open My NIM Wallet

The above code will place a button on your website that will allow the user to open his or her NIM wallet or to create a new one. It also creates a new record in the database, using user's wallet address as the unique identifier for the user's db records. Fortune Cookie (0.01$)
Add to Cart

Add to Cart

When clicked, the item's invoice will be added to the user's wallet where it can be paid for, and then the item received. You can pass custom data for the invoice using data- attributes. Fortune Cookie (0.02$)
Instant Buy

Instant Buy

Single invoice, goes straight to the Nimiq checkout screen with the new invoice to pay. Returns invoice data to the backend and shows it in the user's wallet. The data- attributes are optional. In this case, the data-value attribute is used to pass a custom invoice value.
Donate

Donate NIM

Opens a simple UI that allows the user to enter a custom donation sum, and then make the payment. It shows a thank you message after the donation has been made. Works without the backend. Quick Start
Use the following code to initialize Nimipay (~30 kb) on any website.

<link href="https://nimipay.com/np.0.1.min.css" rel="stylesheet">
const nimAddress = 'NQ13 YOUR WALL ETAD DRES S1F9 T4L7 EA13 N7MP';
const nimAddressLabel = 'Your Brand Name';
</script>

<link href="https://nimipay.com/np.0.1.min.css" rel="stylesheet">
Out of the box, Nimipay works client-side and without the backend. Interactions with the blockchain return data to the website, which then can be passed to the backend. See the source of a lightweight PHP and MySQL backend used on this site.
Nimipay is open source. You can customize it to your individual needs. Why Nimipay
Nimipay is a service that allows websites to accept payments easily, and with inherent security and privacy. It is a fully working prototype, intended to showcase the quick and simple checkout process based on the Nimiq blockchain.
Nimiq is the only blockchain that is in the browser and requires no installation. Nimiq is Crypto 3.0 - it provides the level of simplicity that can be intuitively grasped by any layman. Anyone can create and secure a Nimiq wallet in seconds. Furthermore, Nimiq is based on the essential cryptocurrency values and principles (security, decentralization, client-side key management, PoS).
Additionally, by giving each user a cryptocurrency wallet, custom solutions can be built on top of Nimipay, e.g. your users can deposit NIM to your website and then withdraw them. You can also pay your users by distributing affiliate earnings, airdrops, bounties, rewards, etc. NIM can be used as a currency in a virtual economy, e.g. in a browser-based game, or attached to the checkout flow in a traditional webshop.
Nimipay is open source and does not charge any fees for the service.
Nimipay is brought to you by Coinwink - the app that will send you a Bitcoin alert when your defined conditions are met.
You are welcome to
Donate
Nimipay v0.1
T&C: Use it at your own risk Twitter | GitHub


CBM to issue two types of licenses for foreign banks
The Central Bank of Myanmar (CBM) will issue two types of licenses—foreign bank branch license and subsidiary license-- in the upcoming round of licensing, as from January 1, 2020, according to a statement.
This is the third round of foreign bank licensing since two rounds of stringent licensing process were successfully completed. Nine foreign banks got the greenlight in 2014 and four, in 2016.
They will be allowed to conduct onshore wholesale banking business. Over the past years, the central bank of Myanmar has initiated a process to open the domestic banking market to foreign banks.
For a branch license, the wholesale banking permissible products and services remain unchanged from the existing foreign bank branch licenses. Licensees will be allowed to establish one place of business only. A minimum paid-in capital of USD 75 million will be required for operation.
For a subsidiary license, wholesale banking activities will be allowed at the start of operations. In addition, onshore retail banking activities will be permitted under the subsidiary from the 1st of January. Subsidiaries will be allowed to establish up to ten places of businesses being branches or off-site ATMs. A minimum paid-in capital of USD 100 million be required for operation.
The conversion of existing foreign bank branch into subsidiary will be allowed starting from June 2020. Three full years of activities as a branch in Myanmar will be required before submitting a request for conversion to the central bank of Myanmar.
From the 1st of January 2020, foreign bank ownership into a Myanmar domestic bank exceeding 35 per cent of the capital of the domestic bank may be permitted on case by case basis.
In August, the CBM hired Roland Berger Company Ltd for the consultation services for the third round of foreign bank licensing.


Connecting to game...
Spyfall
Please Enter Your Name
Join
Lobby
Start Game
00:00
Location
Cinema
Janitor
All Locations
End Game


@* * Copyright 2019 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.tariffclassificationfrontend.config.AppConfig @import uk.gov.hmrc.tariffclassificationfrontend.models.{BTIApplication, Case, ApplicationType} @import uk.gov.hmrc.tariffclassificationfrontend.views.CaseDetailPage.CaseDetailPage @import uk.gov.hmrc.tariffclassificationfrontend.views.html.includes.main @import uk.gov.hmrc.tariffclassificationfrontend.views.html.partials.{case_heading, case_nav_bti, case_nav_liability} @import uk.gov.hmrc.tariffclassificationfrontend.views.html.components.initial_focus @(c: Case, page: CaseDetailPage, view: Html, activeTab: Option[String] = None)(implicit request: Request[_], messages: Messages, appConfig: AppConfig) @main(bodyClasses = None, scriptElem = Some(initial_focus(activeTab)), customTitle = Some(messages(s"page.title.${page.toString}"))) { @case_heading(c, displayBackLink = true)