Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by chain

  1. Last year marked a slight decrease in global technology M&A activity from the blockbuster year that was 2018 – when SAP bought Qualtrics for $8 billion, IBM acquired Red Hat for a staggering $33 billion and Broadcom picked up CA Technologies for $18.9 billion in cash. As of the end of Q3 2019, technology M&A deals worth $245 billion had been announced globally, marking a decrease of 25% year-on-year according to GlobalData. Which mergers and acquisitions does 2020 have in store? If January alone is anything to go by, there will be no slowing of major deals across the industry, with security already proving to be a hot area. [ Keep up on the latest thought leadership, insights, how-to, and analysis on IT through Computerworld’s newsletters. ]Here are the biggest technology acqusitions of 2020 so far, in reverse chronological order. Read More @https://www.computerworld.com/article/3513439/biggest-technology-acquisitions-2020.html
  2. Google this week released Chrome 83, picking up after skipping a version because of the COVID-19 pandemic, auto-upgrading eligible users to DNS-over-HTTPS (DoH) and enabling tab groups for everyone. The search firm paid at least $76,000 in bounties to bug researchers who reported some of the 38 vulnerabilities patched in Chrome 83. Five were marked "High," the second-most serious in Google's four-level threat ranking, with three of those marked as "use after free" flaws. The first vulnerability listed, a use-after-free bug in Chrome's reader mode, earned researcher Woojin Oh a $20,000 reward Read More @ https://www.computerworld.com/article/3211427/whats-in-the-latest-chrome-update.html
  3. As the PS5 launch approaches, the pillars of what will make Sony's next-generation games console so special are coming into focus. Its unique SSD will allow for speedy loading times and larger worlds, and its graphics chip will help power visually stunning engines like the Unreal Engine 5.  But the amount of attention Sony is heaping on its Tempest Audio Engine, capable of dynamic and immersive 3D sound, suggests it may be the secret weapon in the PlayStation 5 arsenal. At a corporate strategy meeting for Sony, a slideshow called the PlayStation 5 an "evolution of sound". "By installing a customized 3D audio processing unit in PS5, we have made it possible to deliver diverse and sophisticated 3D audio experiences," the slide reads. "Players can experience sound that moves in from front to behind, above to below, and all around them." Unique experiencesCombining that engine with the speedy SSD and haptic feedback from the DualSense controllers will offer "experiences that were not possible before." Earlier in the year, PS5 lead system architect Mark Cerny described how it would be possible to produce thousands of individual sound sources potentially with the PS5, letting a player hear not only a rainstorm, but the fall and splash of individual droplets. All this would be delivered through a pair of headphones, too, without the need for costly surround sound audio systems. The real question, beyond price and release date, now rests with the games set to take advantage of these innovative features. The latest rumors point to a PS5 games reveal by June, so that wait may soon be over. Source: techradar.com
  4. Apple's iOS 13.5 update is about to make your face mask-wearing life a little easier, with the clearest sign that its next major iPhone software update is imminent. The GM (golden master) version of iOS 13.5 is now out for developers, and that's always the last update Apple issues before its software updates go public. iOS 13.5 features are headlined by a simplified unlock process for Face ID-equipped iPhones if you're wearing a face mask, according to the release notes via 9to5Mac. That's good news for those struggling with Face ID on iOS 13. You'll be able to unlock your phone right away with a passcode instead of waiting for the Face ID menu to fail twice, which is how it currently works. Apple's face-mask-detection feature will work on any iPhone without a home button – so from iPhone 11 to iPhone X, but not the iPhone SE 2020 – when you swipe up from the bottom of the lock screen, or need to authenticate with the App Store, Apple Books, Apple Pay or iTunes. iOS 13.5 supports Covid-19 contact tracing apps Contact tracing apps have been heralded as an essential step to reopening countries and avoiding the further spread of Covid-19. Apple and Google are leading contact tracing efforts, developing functionality into their smartphone operating systems. iOS 13.5 includes an 'Exposure Notification API' to support Covid-19 contact tracing apps from public health authorities. No, those critical apps aren't here yet – that's up to individual governments to create or enable – but the framework is ready. The Exposure Notification API uses Bluetooth Low Energy to determine if, in the last 14 days, you've passed someone and they later test positive for Covid-19 then log it into a centralized database. All of this happens anonymously. Contact tracing apps will be tech's most important contribution to helping life get back to normal, and iOS 13.5 is the first step toward making that happen. For the immediate future, however, the ability to unlock your phone faster is the main reason to download the iOS 13.5 update as soon as it launches. Source : techradar.com
  5. Gary Lin, a Chinese-American business owner in New York City, has been working through the coronavirus crisis to keep his ramen restaurant afloat. He is worried about getting sick and bringing the virus to his family, but has remained partially open for takeout services as rent and bills pile up. On top of the financial struggles, Lin said he and his employees have also been facing harassment due to their Asian background and that business was already down as early as February. Read More @https://abcnews.go.com/Business/asian-americans-face-coronavirus-double-whammy-skyrocketing-unemployment/story?id=70654426&cid=clicksource_4380645_2_heads_hero_live_hero_hed
  6. another one for all types of styles https://www.messletters.com/en/
  7. looking to change the style of your nickname go here!! https://lingojam.com/StylishTextGenerator
  8. chain


    Another with whats his name LOL
  9. chain


    Found this awhile back!!!
  10. France followed in Germany's footsteps by passing a law Wednesday to slap huge fines on social media companies that  don't remove illegal or harmful content within an hour of notification. The new rules, which go into effect July 1, mean that companies must remove the most problematic content -- child abuse and terrorism-related content -- within 60 minutes. For hate speech and other harmful content, the companies will get 24 hours to pull down the content. Failing to comply with the law can lead to fines of up 1.25 million euros ($1.36 million), or up to 4% of their global revenue for serious, repeat offenders. https://www.cnet.com/news/france-gives-social-media-companies-one-hour-to-delete-illegal-content/
  11. Version 4.22.9


    Script Updates Converted all files from ANSI/chcp 1252 to UTF-8, and added Unicode support to regular expressions in functions. Fixed XDCC.ptm bug that prevented translation from working properly. The old exploit was apparently not completely fixed. It should now be fixed. The Splash screen is back! We have fixed all known bugs, and the script is back to what it was when 4.22 was released.
  12. chain

    Peace and Protection

    Version 4.22.9 is released. (2020-03-25) Script Updates Converted all files from ANSI/chcp 1252 to UTF-8, and added Unicode support to regular expressions in functions. Fixed XDCC.ptm bug that prevented translation from working properly. The old exploit was apparently not completely fixed. It should now be fixed. The Splash screen is back! We have fixed all known bugs, and the script is back to what it was when 4.22 was released. Peace&Protection
  13. ; #= ppweather -rs ; ######################################## ; Peace and Protection ; PnP Weather (standard addon) ; ######################################## #.ppa.info off [addon] name=Weather group=Tutorial popup=Weather author=acvxqs version=1.12 url=https://github.com/acvxqs/PnPAddons422 email= id=ppweather ppver=4.22 config=weather unload=weather.unload vars2=weather.apiurl weather.apikey weather.pchar weather.qstring weather.ustring weather.astring weather.mstring weather.kstring weather.istring weather.trigger windows= dialogs=weather [files] 1=weather.ppa [notes] 1=This addon allows you to retrieve weather information from OpenWeatherMap.org using command: /weather {city},{country code} or respond in channel to a !weather {city},{country code} trigger. 2=Please note that city name and country code are divided by comma, use ISO 3166 country codes. #.ppa.info end on *:LOAD:{ ; PnP check if (!$_ispnp) { echo 4 -ati2 *** This addon requires Peace and Protection by pai to use. echo 4 -ati2 *** You can download Peace and Protection at http://www.kristshell.net/pnp/ .timer -mio 1 0 .unload -rs " $+ $script $+ " halt } ; Invalid load method check if (!$istok($_cfgx(addons,ids),$readini($script,n,addon,id),32)) { .timer -mio 1 0 .unload -rs " $+ $script $+ " dispa Unloading ' $+ $script $+ ' $chr(40) $+ addon is not properly loaded; use /addon to load it $+ $chr(41) halt } if ($version < 7.52) { .timer -mio 1 0 .unload -rs " $+ $script $+ " dispa Unloading ' $+ $script $+ ' $chr(40) $+ This script requires mIRC version 7.52+ $+ $chr(41) halt } if ($version < 7.56) { dispa This script requires SReject's JSON For mIRC! dispa Please get it from: https://github.com/SReject/JSON-For-Mirc/archive/v1.0.4000.zip } else getJFM } dialog weather { title "Weather Central" size -1 -1 202 214 option dbu icon script\pnp.ico box "Respond to trigger on networks:", 1, 5 5 95 90 combo 2, 10 15 50 50, size button "Add", 3, 65 15 27 11, disable button "Remove", 4, 65 30 27 11, disable radio "Whitelist channels", 5, 10 70 60 10, group disable radio "Blacklist channels", 6, 10 80 60 10, disable box "Specify channels:", 7, 103 5 95 90 combo 8, 108 15 50 50, size disable button "Add", 9, 163 15 27 11, disable button "Remove", 10, 163 30 27 11, disable box "", 11, 5 100 193 90 check "City", 12, 10 110 50 10, disable check "Country", 13, 10 120 50 10, disable check "Weather short", 14, 10 130 50 10, disable check "Weather long", 15, 10 140 50 10, disable check "Humidity", 16, 10 150 50 10, disable check "Temperature", 17, 65 110 50 10, disable check "Temp. min.", 18, 65 120 50 10, disable check "Temp. max.", 19, 65 130 50 10, disable check "Pressure", 20, 65 140 50 10, disable check "Visibility", 21, 65 150 50 10, disable check "Wind speed", 22, 120 110 50 10, disable check "Wind degree", 23, 120 120 50 10, disable check "Sunrise", 24, 120 130 50 10, disable check "Sunset", 25, 120 140 50 10, disable check "Clouds", 26, 120 150 50 10, disable radio "Kelvin", 27, 10 175 50 10, group disable radio "Metric", 28, 65 175 50 10, disable radio "Imperial", 29, 120 175 50 10, disable text "Unit format:", 30, 10 165 37 8 button "OK", 100, 5 195 40 12, ok button "Cancel", 101, 65 195 37 12, cancel button "API Key", 102, 120 195 37 12 } on *:DIALOG:weather:init:0:{ ; convert active entries to entries the dialog can work with var %anetworks $hget(pnp.weather,anetworks) hadd pnp.weather networks %anetworks if (%anetworks) { ; iterate over networks var %n 1 while ($gettok(%anetworks,%n,44)) { ; there's two net specific hashes: -opt and -channels ; make sure they are ported from 'anet' to 'net' ; data should exist in them already, but cannot hurt to check: var %network $v1 if ($hget(pnp.weather,$+(anet-,%network,-opt))) hadd pnp.weather $+(net-,%network,-opt) $v1 if ($hget(pnp.weather,$+(anet-,%network,-channels))) hadd pnp.weather $+(net-,%network,-channels) $v1 ; now let's focus on all the channels for the network, if ; they exist! ; grab $v1 from previous if-check, handy! var %achannels $v1 if (%achannels) { var %c 1 while ($gettok(%achannels,%c,44)) { var %chan $v1 if ($hget(pnp.weather,$+(achan-,%network,-,%chan))) hadd pnp.weather $+(chan-,%network,-,%chan) $v1 inc %c } } inc %n } ; well we have to load networks if they exist! didtok $dname 2 44 %anetworks } } alias -l wedloadnet { var %network $1 if (!$hget(pnp.weather,$+(net-,%network,-opt))) hadd pnp.weather $+(net-,%network,-opt) 1,1100010000000001 tokenize 44 $hget(pnp.weather,$+(net-,%network,-opt)) if ($1) { did -u $dname 5 did -c $dname 6 wesetopt $2 } else { did -c $dname 5 did -u $dname 6 } did -r $dname 8 if ($hget(pnp.weather,$+(net-,%network,-channels))) { didtok $dname 8 44 $v1 } did -u $dname 8 } alias -l wedloadchan { var %network $1 var %chan $2 if (!$hget(pnp.weather,$+(chan-,%network,-,%chan))) hadd pnp.weather $+(chan-,%network,-,%chan) 1100010000000001 if ($did(5).state) wesetopt $hget(pnp.weather,$+(chan-,%network,-,%chan)) } alias -l wedu { goto $did(2,0).sel $+ $did(8,0).sel $+ $did(6).state :000 | :001 | :010 ;echo -a 000 001 010 $caller did -b $dname 4,5,6,8,9,10,12-29 did -r $dname 8 return :011 ;echo -a 011 $caller did -r $dname 8 did -ra $dname 11 Settings did -b $dname 5,6,8,9,10,12-29 did -u $dname 12-29 return :100 ;echo -a 100 $caller did -bu $dname 12-29 did -e $dname 4,5,6,8 did -ra $dname 11 Settings return :101 ;echo -a 101 $caller did -e $dname 4,5,6,8,12-29 did -ra $dname 11 Settings for network: $did(2,0).text return :110 ;echo -a 110 $caller did -e $dname 8,10,12-29 did -ra $dname 11 Settings for channel: $replace($did(8,0).text,&,&&) on network: $did(2,0).text return :111 ;echo -a 111 $caller did -e $dname 10 did -ra $dname 11 Settings for network: $did(2,0).text return } on *:DIALOG:weather:sclick:*:{ if ($did < 1) return elseif ($did == 2) { if ($did(2,0).sel) wedloadnet $did(2,0).text | wedu } elseif ($did == 3) { _ddadd $dname 2 $did(2,0).text hadd pnp.weather networks $addtok($hget(pnp.weather,networks),$did(2,0).text,44) did -uf $dname 2 } elseif ($did == 4) { hadd pnp.weather networks $remtok($hget(pnp.weather,networks),$did(2,0).text,1,44) did -d $dname 2 $did(2,1).sel did -r $dname 8 did -uf $dname 2 did -b $dname 3,4,5,6,8,9,10,12-29 did -ra $dname 11 Settings } elseif ($did == 5) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,$+(net-,$did(2,0).text,-opt)),0,1,44) if ($did(8,0).text) wedloadchan $did(2,0).text $did(8,0).text wedu } elseif ($did == 6) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,$+(net-,$did(2,0).text,-opt)),1,1,44) wedloadnet $did(2,0).text wedu } elseif ($did == 8) { if ($did(8,0).sel) wedloadchan $did(2,0).text $did(8,0).text | wedu } elseif ($did == 9) { _ddadd $dname 8 $did(8,0).text hadd pnp.weather $+(net-,$did(2,0).text,-channels) $addtok($hget(pnp.weather,$+(net-,$did(2,0).text,-channels)),$did(8,0).text,44) did -uf $dname 8 } elseif ($did == 10) { hadd pnp.weather $+(net-,$did(2,0).text,-channels) $remtok($hget(pnp.weather,$+(net-,$did(2,0).text,-channels)),$did(8,0).text,1,44) hdel pnp.weather $+(chan-,$did(2,0).text,-,$did(8,0).text) did -d $dname 8 $did(8,1).sel did -uf $dname 8 if ($did(5).state) did -b $dname 12-29 else did -e $dname 12-29 did -b $dname 10 did -ra $dname 11 Settings } elseif ($istok(12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29,$did,32)) { ;editing for channel? if ($did(5).state) { hadd pnp.weather $+(chan-,$did(2,0).text,-,$did(8,0).text) $wegetopt } ; editing for network? elseif ($did(6).state) { var %do $+(net-,$did(2,0).text,-opt) hadd pnp.weather %do $puttok($hget(pnp.weather,%do),$wegetopt,2,44) } } elseif ($did == 100) { ; purging channels that were removed... var %rn 1 while ($gettok($hget(pnp.weather,anetworks),%rn,44)) { var %rc 1,%rnetwork $v1 while ($gettok($hget(pnp.weather,$+(anet-,%rnetwork,-channels)),%rc,44)) { var %rchan $v1 if (!$istok($hget(pnp.weather,$+(net-,%rnetwork,-channels)),%rchan,44)) { hdel pnp.weather $+(achan-,%rnetwork,-,%rchan)) } inc %rc } inc %rn } var %networks $hget(pnp.weather,networks) hadd pnp.weather anetworks %networks if (%networks) { ; iterate over networks var %n 1 while ($gettok(%networks,%n,44)) { ; there's two net specific hashes: -opt and -channels ; make sure they are ported from 'net' to 'anet' var %network $v1 `weather $+(anet-,%network,-opt) $hget(pnp.weather,$+(net-,%network,-opt)) `weather $+(anet-,%network,-channels) $hget(pnp.weather,$+(net-,%network,-channels)) ; now let's focus on all the channels for the network, if ; they exist! ; grab $v1 from previous if-check, handy! var %channels $hget(pnp.weather,$+(net-,%network,-channels)) if (%channels) { var %c 1 while ($gettok(%channels,%c,44)) { var %chan $v1 if ($hget(pnp.weather,$+(chan-,%network,-,%chan))) `weather $+(achan-,%network,-,%chan) $v1 inc %c } } inc %n } } ; throw away dialog data hdel -w pnp.weather net-* hdel -w pnp.weather chan-* hdel pnp.weather networks } elseif ($did == 101) { ; throw away changes hdel -w pnp.weather net-* hdel -w pnp.weather chan-* hdel pnp.weather networks } elseif ($did == 102) { `set weather.apikey $_entry(-1,$hget(pnp.config,weather.apikey),What is your API key?) } } on *:DIALOG:weather:edit:2:{ if ($did(2,0).text == $null) { did -b $dname 3 } elseif ($_scandid($dname,2,$did(2,0).text)) { did -c $dname 2 $v1 did -b $dname 3 did -e $dname 4 wedloadnet $did(2,0).text } else { did -e $dname 3 did -b $dname 4,8 } wedu } on *:DIALOG:weather:edit:8:{ if ($did(8,0).text == $null) { did -b $dname 9 did -ra $dname 11 Settings } elseif ($_scandid($dname,8,$did(8,0).text)) { did -c $dname 8 $v1 did -b $dname 9 wedloadchan $did(8,0).text wedu } else { did -e $dname 9 did -b $dname 10 } wedu } alias -l wesetopt { if ($left($1,1)) did -c $dname 12 else did -u $dname 12 if ($mid($1,2,1)) did -c $dname 13 else did -u $dname 13 if ($mid($1,3,1)) did -c $dname 14 else did -u $dname 14 if ($mid($1,4,1)) did -c $dname 15 else did -u $dname 15 if ($mid($1,5,1)) did -c $dname 16 else did -u $dname 16 if ($mid($1,6,1)) did -c $dname 17 else did -u $dname 17 if ($mid($1,7,1)) did -c $dname 18 else did -u $dname 18 if ($mid($1,8,1)) did -c $dname 19 else did -u $dname 19 if ($mid($1,9,1)) did -c $dname 20 else did -u $dname 20 if ($mid($1,10,1)) did -c $dname 21 else did -u $dname 21 if ($mid($1,11,1)) did -c $dname 22 else did -u $dname 22 if ($mid($1,12,1)) did -c $dname 23 else did -u $dname 23 if ($mid($1,13,1)) did -c $dname 24 else did -u $dname 24 if ($mid($1,14,1)) did -c $dname 25 else did -u $dname 25 if ($mid($1,15,1)) did -c $dname 26 else did -u $dname 26 if ($right($1,1) == 1) { did -u $dname 27 did -c $dname 28 did -u $dname 29 } elseif ($right($1,1) == 2) { did -u $dname 27 did -u $dname 28 did -c $dname 29 } else { did -c $dname 27 did -u $dname 28 did -u $dname 29 } } alias -l wegetopt { var %opt,%i 12 while (%i <= 26) { %opt = %opt $+ $did(%i).state inc %i } if ($did(27).state) %opt = %opt $+ 0 elseif ($did(28).state) %opt = %opt $+ 1 elseif ($did(29).state) %opt = %opt $+ 2 else %opt = %opt $+ 1 return %opt } alias -l weather.load { if ($hget(pnp.weather)) hdel -w pnp.weather * else hmake pnp.weather 30 var %file $_cfg(weather.dat) if ($isfile(%file)) hload pnp.weather " $+ %file $+ " } alias weather.unload { if ($islias(jsonclose)) jsonclose -w PPWEATHER.* weather.save 1 if (!$_yesno(1,Would you like to keep weather configuration data?)) .remove $_cfg(weather.dat) } alias -l weather.save { var %file $_cfg(weather.dat) if ($hget(pnp.weather)) { hsave pnp.weather " $+ %file $+ " if ($1) hfree pnp.weather } } alias -l weather.setup { if ($hget(pnp.weather) == $null) weather.load if (!$hget(pnp.config,weather.apiurl)) `set weather.apiurl $weather.owm(apiurl) if (!$hget(pnp.config,weather.pchar)) `set weather.pchar $weather.owm(pchar) if (!$hget(pnp.config,weather.qstring)) `set weather.qstring $weather.owm(qstring) if (!$hget(pnp.config,weather.ustring)) `set weather.ustring $weather.owm(ustring) if (!$hget(pnp.config,weather.astring)) `set weather.astring $weather.owm(astring) if (!$hget(pnp.config,weather.mstring)) `set weather.mstring $weather.owm(mstring) if (!$hget(pnp.config,weather.istring)) `set weather.istring $weather.owm(istring) if (!$hget(pnp.config,weather.kstring)) `set weather.kstring $weather.owm(kstring) if (!$hget(pnp.config,weather.trigger)) `set weather.trigger !weather } alias weather.owm { if ($istok(apiurl dunits pchar qstring ustring astring mstring istring kstring,$1,32)) goto $1 else return $null :apiurl | return http://api.openweathermap.org/data/2.5/weather :pchar | return ? :qstring | return q= :ustring | return &units= :astring | return &appid= :mstring | return metric :istring | return imperial :kstring | return kelvin } on *:START:{ if ($_ispnp) _startup.add _weather.start Initializing weather addon } on *:EXIT:{ weather.save | jsonclose -w PPWEATHER.* } alias _weather.start { weather.setup } ; `weather varname [value] ; varname should not include the %` alias `weather { if ($hget(pnp.weather,$1) == $2-) return if ($2- == $null) { hdel pnp.weather $1 write -ds [ $+ [ $1 ] ] config\ $+ $hget(pnp,user) $+ \weather.dat _broadcastp hdel pnp.weather $1 } else { hadd pnp.weather $1 $2- write -s [ $+ [ $1 ] ] config\ $+ $hget(pnp,user) $+ \weather.dat $1- _broadcastp _`weather $1 } } alias _`weather hadd pnp.config $1 $read(config\ $+ $hget(pnp,user) $+ \weather.dat,nts,$1) alias weather { var %caller $caller if ($isid) return var %switch,%rest if (+* iswm $1) { %switch = $mid($1,2) %rest = $2- } else { if (%caller == editbox) %switch = m elseif (%caller == event) { if ($istok($hget(pnp.weather,anetworks),$network,44)) { var %netopt $hget(pnp.weather,$+(anet-,$network,-opt)) if ($gettok(%netopt,1,44)) { if ($right($gettok(%netopt,2,44),1) == 0) %switch = k elseif ($right($gettok(%netopt,2,44),1) == 1) %switch = m elseif ($right($gettok(%netopt,2,44),1) == 2) %switch = i else halt } elseif ($istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { var %chanopt $hget(pnp.weather,$+(achan-,$network,-,$chan)) if ($right(%chanopt,1) == 0) %switch = k elseif ($right(%chanopt,1) == 1) %switch = m elseif ($right(%chanopt,1) == 2) %switch = i else halt } else halt } else halt } else %switch = m %rest = $1- } if (%rest) { if (%switch === m) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.mstring)) %switch = metric } elseif (%switch === i) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.istring)) %switch = imperial } elseif (%switch === k) { var %units $+($hget(pnp.config,weather.ustring),$hget(pnp.config,weather.kstring)) %switch = kelvin } if (!$hget(pnp.config,weather.apikey)) { dispa Weather: API key not set! halt } var %city $gettok(%rest,1,44) %city = $replace(%city,$chr(32),$chr(37) $+ 20) var %cc $gettok(%rest,2,44) var %pattern /^[-%20a-z]{2,}$/i if (($regex(%city,%pattern)) && ($regex(%cc,/^[a-z]{2}$/i))) { var %jsonname $lower($+(PPWEATHER.,%city,.,%cc,.,%switch)) if (!$JSON(%jsonname)) { weatherfetch %caller %jsonname %city %cc %units } else { var %dt $json(%jsonname,dt).value if ((!%dt) || ($calc($ctime - %dt) >= 600)) { JSONCLOSE %jsonname weatherfetch %caller %jsonname %city %cc %units } else { if (%caller == editbox) dispa [Weather] (cached) $regsubex($json(%jsonname).string,/(\d)/g,$:t(\1))) elseif (%caller == event) { if ($_weatherfetchresult(%jsonname)) msg $chan [Weather] (cached) $v1 } } } } else { if (%caller == editbox) dispa Usage: /weather <+m|i|k> <city>,<country code> elseif (%caller == event) notice $nick Usage: $hget(pnp.config,weather.trigger ) <city>,<country code> | notice $nick Example: $hget(pnp.config,weather.trigger) Vlissingen,nl } } else _dialog -am weather weather } alias -l _weatherfetchresult { var %jsonname $1, %result ; respond to network? if ($istok($hget(pnp.weather,anetworks),$network,44)) { ; blacklist channels? If so, respond to all channels! var %netopt $hget(pnp.weather,$+(anet-,$network,-opt)) if ($gettok(%netopt,1,44)) { ; if channel not blacklisted, then proceed if (!$istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { if ($gettok(%netopt,2,44)) { var %opt $v1 %result = $_weatherfetchresult2(%jsonname,%opt) } } } ; whitelist channels? ; check if channel is in the list and if it is ; check its options elseif ($istok($hget(pnp.weather,$+(anet-,$network,-channels)),$chan,44)) { var %opt $hget(pnp.weather,$+(achan-,$network,-,$chan)) %result = $_weatherfetchresult2(%jsonname,%opt) } else %result = $null } else %result = $null return %result } alias -l _weatherfetchresult2 { var %jsonname $1 var %opt $2 var %city $json(%jsonname,name).value var %cc $json(%jsonname,sys,country).value var %short $json(%jsonname,weather,0,main).value var %long $json(%jsonname,weather,0,description).value var %hum $json(%jsonname,main,humidity).value var %temp $json(%jsonname,main,temp).value var %min_temp $json(%jsonname,main,temp_min).value var %max_temp $json(%jsonname,main,temp_max).value var %pressure $json(%jsonname,main,pressure).value var %vis $json(%jsonname,visibility).value var %wspeed $json(%jsonname,wind,speed).value var %wdegree $json(%jsonname,wind,deg).value var %sunrise $json(%jsonname,sys,sunrise).value var %sunset $json(%jsonname,sys,sunset).value var %clouds $json(%jsonname,clouds,all).value var %result if ($left(%opt,1)) %result = City: %city • if ($mid(%opt,2,1)) %result = %result Country: %cc • if ($mid(%opt,3,1)) %result = %result Weather: %short • if ($mid(%opt,4,1)) %result = %result Description: %long • if ($mid(%opt,5,1)) %result = %result Humidity: %hum • if ($mid(%opt,6,1)) %result = %result Temperature: %temp • if ($mid(%opt,7,1)) %result = %result Min. temp.: %min_temp • if ($mid(%opt,8,1)) %result = %result Max. temp: %max_temp • if ($mid(%opt,9,1)) %result = %result Pressure: %pressure • if ($mid(%opt,10,1)) %result = %result Visibility: %vis • if ($mid(%opt,11,1)) %result = %result Wind speed: %wspeed • if ($mid(%opt,12,1)) %result = %result Wind degree: %wdegree • if ($mid(%opt,13,1)) %result = %result Sunrise: ETA $duration($remove($calc($ctime - %sunrise),-),3) • if ($mid(%opt,14,1)) %result = %result Sunset: ETA $duration($remove($calc($ctime - %sunset),-),3) • if ($mid(%opt,15,1)) %result = %result Clouds: %clouds • return %result } alias -l weatherfetch { var %caller $1 var %jsonname $2 var %city $3 var %cc $4 var %units $5 var %page $+($hget(pnp.config,weather.apiurl),$hget(pnp.config,weather.pchar)) %page = $+(%page,$hget(pnp.config,weather.qstring),%city,$chr(44),%cc) %page = $+(%page,%units)) %page = $+(%page,$hget(pnp.config,weather.astring),$hget(pnp.config,weather.apikey)) JSONOPEN -u %jsonname %page if ($json(%jsonname).httpStatus == 200) { if (%caller == editbox) dispa [Weather] $regsubex($json(%jsonname).string,/(\d)/g,$:t(\1))) elseif (%caller == event) { if ($_weatherfetchresult(%jsonname)) msg $chan [Weather] $v1 } else dispa %caller } elseif ($json(%jsonname).string) { if (%caller == editbox) dispa Weather: $json(%jsonname).string elseif (%caller == event) msg $chan [Weather] $json(%jsonname).string } else dispa Weather: $json(%jsonname).httpStatus - $json(%jsonname).httpStatusText } on *:TEXT:$($hget(pnp.config,weather.trigger) *):#:weather $2- alias getJFM { ; sha-512 of JSON For mIRC.mrc v1.0.4000 var %sha512-1 b29de8c964b002d089fa030a9a5357e3c737f17cd16309c0fa82142120a590db2223d4703cafe97f37b65de170bb4d9dbf7bb508f4052a47a2127fc74c10a6d6 ; group enabled hash var %sha512-2 183153806705c99fce8fb3003ea7e5522e9f67c40b3e064280ad83111e3d8f92b4cfae106b8827a9d99c2377c32d6d6892fe878a027bcaea24a466450cfeead8 ; check if JSON For mIRC is loaded if ($isalias(JSONVersion)) { ; script is loaded, but what version? var %file $isalias(JSONVersion).fname if (!$istok(%sha512-1 %sha512-2,$sha512(%file,2),32)) { dispa Unloading $JSONVersion ... .unload -rs $qt(%file) | .timer -mio 1 0 getJFM } else return 0 } elseif ($1 isnum) { if ($urlget($1).state == fail) { dispa Downloading JSON For mIRC failed. Are you connected to the internet? | halt } elseif ($zip($urlget($1).target,eo,scripts)) { var %file $qt($findfile(scripts\JSON-For-Mirc-1.0.4000,JSON For mIRC.mrc,1)) if ($sha512(%file,2) == %sha512-1) dispa Loading JSON For mIRC ver1.0.4000 | .load -rs %file else dispa Wrong sha512 hash for %file $+ ! .remove $urlget($1).target } else { dispa Something went wrong unzipping $:t($urlget($1).target) } } else { var %url https://github.com/SReject/JSON-For-Mirc/archive/v1.0.4000.zip var %target JFM.zip dispa Obtaining JSON For mIRC... return $urlget(%url,gf,%target,getJFM) } }
  14. chain

    mIRC v7.61

    This is a small update that addresses a number of issues reported by users since the last release. It includes improvements, changes and fixes to a number of features, including:Fixed custom toolbar buttons not being displayed correctly.Fixed /if isnum backward compatibility issue due to recent change.Fixed local host/ip addresses not being changeable while connected to a server.Fixed bitmap memory bug in About dialog.Fixed /cnick not updating nick color immediately when used with a full address.How to upgrade?mIRC is distributed in an installer that installs mIRC on your computer for you. Simply download and run the installer from the download page on the mIRC website. Follow the instructions the installer gives to you. When upgrading all your old settings and scripts will stay as they were, if you want that. Read the questions the installer asks with care and nothing can go wrong. You will be chatting with the new mIRC in no time. If you get stuck or if you want to find out more about a certain feature, just click on a Help button or browse the Help file and you should find lots of hints to help you out.Where to download?As always, the latest version of mIRC can be downloaded from the download page on the mIRC website.Registering mIRCAs you know, mIRC can be downloaded freely and evaluated for 30 days. If you find that you enjoy using mIRC, it would be great and much appreciated if you registered your copy. This licenses you to use your copy of mIRC and helps to support our continued work on mIRC. You can find out how to register here.Full list of Fixes, Changes and Additions.For a more detailed list of recent changes, please see the whatsnew.txt file. You will need to read through the help file to learn more about these changes and their impact. Some changes are obvious, some need getting used to - please take your time to play with them and see how they work. May we invite you to use these forums for all questions you might have? The forums offer great help with everything related to mIRC!
  15. Adobe, events are always exciting opportunities to showcase our innovation, to be inspired, network, and learn from one another. We have made the critical decision to pivot Adobe’s in-person events to a virtual format for the remainder of 2020. It is our ongoing commitment to continue to protect the health and wellbeing of our employees, customers, partners, and communities and do our part to flatten the curve of COVID-19. This unprecedented time has spawned an amazing amount of creativity, productivity, collaboration, and innovation at Adobe. More than ever, we are committed to delivering the world’s best digital events for our customers and communities all around the world. On October 19, we will host Digital MAX, which promises to be one of the most immersive, imaginative, and innovative digital events of the year. As always, we’ll be unveiling the latest Creative Cloud innovation, hearing from some of the most inspirational creative leaders in the world, and creating new and exciting ways to connect our global community. And best yet, the magic of Adobe MAX will be open to everyone. Read More Here
  16. As more businesses begin to look to the future, and a return to regular operations after the COVID-19 lockdowns, Twitter has announced that it will let its staff work from home indefinitely - forever if they like - even after the restrictions are lifted. As per Twitter: "We were uniquely positioned to respond quickly and allow folks to work from home given our emphasis on decentralization and supporting a distributed workforce capable of working from anywhere. The past few months have proven we can make that work. So if our employees are in a role and situation that enables them to work from home and they want to continue to do so forever, we will make that happen. If not, our offices will be their warm and welcoming selves, with some additional precautions, when we feel it’s safe to return." Read More @https://www.socialmediatoday.com/news/twitter-looks-to-lead-broader-remote-work-shift-with-staff-free-to-keep-wo/577834/
  17. Robert De Niro spoke to the BBC about life in New York during the outbreak and the country's leadership. The Oscar winning actor told Newsnight's Emily Maitlis that it was a very difficult time and he found it scary that there wasn't stronger criticism of President Trumps response to the pandemic.
  18. Police in Liberia have arrested a political activist for a Facebook post in which he used inflammatory language to criticise the government’s proposed coronavirus feeding programme. Menipakei Dumoe, a staunch critic of President George Weah, had rejected the idea. He wrote on Facebook on Monday: “We don’t need free bags of rice. I say we the poor in [the capital] Monrovia need AK-47s so that our leaders can take us seriously.” Police say his post amounts to a security threat. Before his arrest, Mr Dumoe defended himself, saying his message was a metaphor and did not refer to actual guns. He is acting head of the large campaign group The Council of Patriots, which has organised two mass protests in the last year against Mr Weah’s handling of the economy. Mr Dumoe’s lawyer Findley Karnga has called for his release, saying he was being held unconstitutionally. But police spokesman Moses Carter told the BBC that authorities had 48 hours to press charges. Liberia has been in lockdown since 10 April, with a curfew from 15:00 to 06:00 local time. But it has been difficult for the authorities to police as people have been going out looking for food. The government’s $25m (£20m) proposal to feed some of the most vulnerable people in the country affected by the restrictions has been approved by both houses of parliament on the condition that it specifies where the money is being sourced.
  19. Buzzen Connection Address: irc.buzzen.net or or Port: 7778 http://www.buzzen.com Essential Chat Network Connection Address: or Port: 7778 http://www.ecnchat.com WX Connection Address: Port: 7778 http://www.ircwx.com Sparkpea Connection Address: or Port: 7778 http://www.sparkpea.net EvolutionChat Connection Address Port: 7778 http://www.evolutionchat.co The Chat Club Connection Address: Port: 7778 http://www.thechat.club
  20. The death toll from coronavirus in the United States has now reached 80, 087 people. Just two months ago, on March 11, the death toll was 38 people. Read More @https://www.theguardian.com/us-news/live/2020/may/11/coronavirus-us-donald-trump-pence-fauci-isolation-cuomo-latest-news-updates
  21. Twitter’s effort to tackle coronavirus misinformation is prompting the company to place labels and warning messages on tweets that contain disputed claims about the pandemic.  The change is designed to give users “additional context” to Twitter conversations swirling around the topic involving contested or misleading claims, Public Policy Director Nick Pickles said on Monday.   In March, Twitter began removing tweets that contain coronavirus misinformation. However, the policy only applies to posts that risk causing serious harm, like advising people to drink bleach to cure themselves Read More @https://www.pcmag.com/news/twitter-moves-to-curb-covid-19-conspiracy-theories-with-warnings-labels
  22. you realize. It's not just about visiting web pages anymore— browsers function as something of an operating system in their own right, which is really not all that far off with Chrome OS now powering Google's Chromebooks. While there is still plenty of debate over which web browser is the best, there's certainly something special about the sleek, minimalist package known as Google Chrome. And the data shows that most users agree: According to Net Applications, most internet users are on Chrome, and it's not particularly close. One of the reasons for Chrome's popularity is its clean, polished UI and its versatility. While Chrome's abilities multiply greatly when you consider the near-bottomless library of extensions, there's a bounty of stock functionality embedded all throughout Chrome's guts you may not even know about. Check out the list below for tricks hidden inside Chrome that you really need to be using. Read More @https://www.pcmag.com/news/22-hidden-chrome-features-that-will-make-your-life-easier
  23. chain

    Give Away Of The Day

    Giveaway of the day — Files Inspector Prо 1.40Free Up Disk Space Manually!Giveaway of the day — MobieSync 2.0.28The best phone data manager for iPhone and Android. https://www.giveawayoftheday.com/
  24. The first dozen Xbox Series X game trailers premiered during Microsoft's live stream and gave us insight into its console's capabilities. The event was our chance to see Assassin’s Creed: Valhalla, Vampire: The Masquerade – Bloodlines 2 and a new Yakuza game running on the forthcoming new Xbox. Some heavy-hitters were noticeably absent, and Xbox Games Studios head Matt Booty noted that first-party games would be revealed in July. In other words, we have to wait to see that Halo Infinite trailer, even though it's the most anticipated Xbox Series X game.  Instead, the first stream focused on games from Microsoft’s third-party partners. The headliner was the viking-themed Assassin’s Creed: Valhalla, but most of the Xbox Series X games shown off were original titles – not sequels or spinoffs from popular franchises.  Unveiling a list of unknowns wasn’t quite what viewers were expecting, and likely won’t build the kind of hype that showing off new Halo, Gears, or Forza footage would have. But it’s a relief to see Microsoft’s partnerships are paying off with a diverse lineup of Xbox Series X games that (hopefully) will push the console to shine. Read More @https://www.techradar.com/news/xbox-series-x-game-trailers
  25. While last to be shown, the biggest game shown on the stream was certainly Assassin’s Creed: Valhalla. Norse altars, the aurora borealis, and longships, oh my! While we didn’t see any gameplay, this Xbox Series X game trailer showed off some exciting moments that we’re sure will make sense in context of the game. It’s a bit of a disappointing tease, but the YouTube video’s description revealed more about the game: RPG mechanics, political gameplay, raiding, and settlement expansion augment the signature Assassin’s Creed hack-and-slash gameplay.
  • Create New...