Buffer extension
Author: e | 2025-04-25
jwplayer buffer booster is a Chrome extension that aims to enhance the buffering capabilities of the popular video player, jwplayer. With this extension installed, the buffering time of videos
Buffer browser extension - Buffer Help Center
You could upload Silverlight files to images and documents library of custom type where you do not have restriction about the extension of a file, but most probably the application will not work. The best way at this stage is uploading the application somewhere in your project - say in a root folder called SilverlightApplications.Is this zip & extract functionality available via an API, and are there any examples or documentation?Below is a sample code that illustrates using of ZipManager class.private void UploadFiles(ILibrary library) { foreach (UploadedFile file in RadUploadControl.UploadedFiles) { ZipManager zipManager = new ZipManager(); IZipArchive zipArchive = zipManager.GetZipArchive(file.InputStream); IAbstractFile[] archive = zipArchive.GetFiles(true); long filesSize = 0; if (library.MaxSize > 0) { foreach (IAbstractFile item in archive) { filesSize += item.Size; if (filesSize > library.MaxSize) { HttpContext.Current.Response.Write("FILE SIZE PROBLEM"); return; } } } int i = -1; foreach (IAbstractFile item in archive) { i++; double percentIncrement = 100 / (double)archive.Length; progress["PrimaryTotal"] = archive.Length.ToString(); if (i != 0) progress["PrimaryPercent"] = ((int)(i * percentIncrement)).ToString(); progress["PrimaryValue"] = (i + 1).ToString(); string extension = String.Empty; string name; string itemName = item.FullName.Substring(item.RootFolder.FullName.Length - 1); if (item.Name.LastIndexOf(".") != -1) { extension = item.Name.Substring(item.Name.LastIndexOf('.')); name = item.Name.Remove(item.Name.LastIndexOf(".")); } else name = item.Name; Stream str = item.OpenRead(); byte[] buffer = new byte[item.Size]; long position = 0; int currentByte = str.ReadByte(); while (currentByte != -1) { buffer[position++] = (byte)currentByte; currentByte = str.ReadByte(); } try { this.manager = new LibraryManager(); // JUST FOR THE SAMPLE //ILibrary lib = manager.GetLibrary("silverlight"); //or set it from the parameter. itemId = manager.UploadFile(buffer, name, extension, MimeMapper.GetMimeMapping(item.Name), item.Size, library).ID; uploadedFileIDs.Add(itemId.ToString()); } catch (ArgumentException) { FilesToUpload.Add(itemName, "NOT VALID"); continue; } catch (Exception) { FilesToUpload.Add(itemName, "UNKNOWN"); continue; } if (itemId != Guid.Empty) FilesToUpload.Add(itemId.ToString(), "SUCCESSFULL"); else FilesToUpload.Add(itemName, "UNKNOWN"); } } foreach (UploadedFile file in RadUploadControl.InvalidFiles) { if (!file.GetExtension().Equals(".zip", StringComparison.OrdinalIgnoreCase)) { HttpContext.Current.Response.Write("NOT VALID EXTENSION"); return; } } } private LibraryManager manager; private Liststring> uploadedFileIDs = new Liststring>(); private Guid itemId; // just for the the sample private RadUpload RadUploadControl;
MMU Buffer Extension (inspired by RMU buffer) - Printables.com
= 30%, 4 = 40%)0 = starts the video over at 0:00 = pauses/unpauses the videoHere are even more shortcuts for YouTube, courtesy of Hong Kiat.Keyboard shortcuts for Google+Like most Google products, Google+ has some handy shortcuts for faster use. Try any of these from inside your Google+ account.left arrow = Navigates to the menu at the left side of the page (e.g., Home, Photos), and you can scroll this list with the up/down arrows./ = selects the search box at the top of the pagej/k = moves up/down in the streamYou can access the full list of Google+ shortcuts from any G+ page by typing a question mark.Keyboard shortcut for the Buffer extensionThis is one of our favorite tips to use with Buffer. When you’ve installed the Buffer browser extension, you can activate your Buffer composer with a simple hotkey from any website at all. The shortcut is customizable in the Buffer extension settings, but it defaults to this:+bKeyboard shortcuts for WordPressWe use WordPress every day for composing our blog posts here at Buffer, so we’ve picked up a few tricks along the way. If you ever want to view the full list of keyboard shortcuts inside your WordPress editor, click on the question mark icon from the editor menu.Here are a few of my personal favorites:+ 2, 3, or 4 = Heading 2, 3, or 4 wherever your cursor currently is++a = add a link++m = insert an image(I use distraction-free writing mode when I’m composing in WordPress, and there’s a neat shortcut that lets you resize the width of the distraction-free editor. Press +plus/minus to change the width.)To see the full list of WordPress shortcuts, you can click the question mark icon in the menu bar of your post editor, or use the shortcut ++h.Keyboard shortcuts for PocketI’ve found Pocket to be an ideal part of my researching and reading habit, and it’s great to learn new ways to make this tool even more useful. Here are a couple.+1 = go to homepage+2 = go to favorites+3 = go to archivea = Archivef = FavoriteThe complete list of keyboard shortcuts can be found here.Keyboard shortcuts for MacWe are pretty big Apple fans at Buffer. Our setups include Macbook Airs and Macbook Pros, and we’ve learned some pretty nifty tricks to fly through our workflows just as fast as possible. Here are a few of our favorite tips:+MMU Buffer Extension by SpongyBob
Pinterest is such a great platform for finding inspiration or researching brands and products..With more than 498 million users and over 1.5 billion Pins saved every week, there’s always something new to cook, craft, buy, read, or be inspired by on the social network for visual content.For businesses or individuals looking to build or grow a presence on Pinterest, consistently posting valuable and interesting Pins is a great Pinterest marketing strategy to help people discover and share your Pins.Buffer has officially partnered with Pinterest to give you a Pinterest scheduling tool that makes it even easier to Pin consistently, measure your progress, and set your own course for Pinterest success.All Buffer customers can post and schedule to Pinterest, in addition to social media platforms Facebook, X/Twitter, Instagram,LinkedIn, TikTok, YouTube, Google Business Profile, and Mastodon. Hooray for one-stop social media management!Buffer + Pinterest: How do you schedule Pinterest posts?We wanted to create a way to schedule Pins that feels as simple and fun as Pinterest itself. Using Buffer for Pinterest, you can:Pin from anywhere on the web, or upload your own imageCreate a variety of unique daily Pinning schedules customized just for you and your content calendarTrack and measure repins, likes, and commentsAdding a Pinterest account to BufferAuthorizing your Pinterest account with Buffer is a quick process. First, log in to Pinterest with the account you’d like to connect — whether it’s personal or a Pinterest business. Then head on over to Buffer.If you’re new to Buffer, hi there! We’ll walk you through the whole process, step by step..If you’ve got an account with us already, head to your dashboard. On the left side, you’ll see an option to connect more profiles and pages. Choose Pinterest and then click the Authorize button. Buffer will do the rest and get you all set up with some posting times in place.Create Pins and schedule Pinterest Pins with BufferScheduling a Pinterest image through Buffer takes just a few clicks. The simplest method might be to install one Buffer’s handy browser extension that makes sharing a snap.Once you do, you should see a blue “Share. jwplayer buffer booster is a Chrome extension that aims to enhance the buffering capabilities of the popular video player, jwplayer. With this extension installed, the buffering time of videos jwplayer buffer booster. jwplayer buffer booster is a Chrome extension that aims to enhance the buffering capabilities of the popular video player, jwplayer. With this extension installed, theBuffer Integrations - Tailor Buffer your way with apps, extensions
Fit), but without the environment variable, the setting is now empty. As of PHP 8.3, you can now specify a fallback value to use, using the :- notation that you may have used with Bash configuration or Makefiles:xdebug.client_host = "${XDEBUG_CLIENT_HOST:-localhost}" This can be particularly useful for defining deployment defaults, but allowing different environments (e.g., development, staging, CI/CD, etc.) to override the value via ENV variables.gc_status() Extended InformationThe function gc_status() returns an associative array. Prior to PHP 8.3, the array included the following:runs (int): number of times GC has occurredcollected (int): number of objects collectedthreshold (int): number of roots in the buffer that will trigger GC.roots (int): total number of roots in the bufferPHP 8.3 expands this with 8 more keys:running (bool)protected (bool): Whether or not the GC is protected and forbidding root additions.full (bool): whether or not the GC buffer exceeds GC_MAX_BUF_SIZE.buffer_size (int): current GC buffer size.application_time (float): total application time, in secondscollector_time (float): time spent collecting cycles, in secondsdestructor_time (float): time spent executing destructors during collection, in secondsfree_time (float): time spent freeing values during collection, in secondsThis change primarily affects tools that monitor applications, including profilers and debuggers. Lint More Than One File at a TimeThe -l switch to the PHP CLI binary allows you to lint a PHP file to ensure it has no syntax errors: php -l index.phpPrevious to PHP 8.3, it only allowed you to lint one file at a time, which meant you had to invoke it once per application file if you wanted to check an entire project. As of PHP 8.3, it now allows you to pass multiple files:php -l src/**/*.phpUse Exceptions by Default in SQLite3 ExtensionWhile PDO and several database extensions are already emitting exceptions by default in PHP 8, the SQLite3 extension has not. PHP 8.3 introduces SQLite3Exception, and alters the behavior of the extension when SQLite3::enableExceptions(true) is called to emit this extension-specific exception (instead of a generic Exception). Additionally, calling SQLite3::enableExceptions(false)will now raise anE_DEPRECATED error.Starting in PHP 9.0, the extension will always raise exceptions. Calling SQLite3::enableExceptions(true) will raise an E_DEPRECATED error, and calling SQLite3::enableExceptions(false) will raise a fatal error. PHP 10.0 will remove the SQLite3::enableExceptions()method entirely.Full notes on this change >>More Appropriate Date/Time ExceptionsThe Date/Time extension has been throwing exceptions and errors, but using the most generic Exception and Error types. As of PHP 8.3, it will use a more fine-grained approach, raising any of the following under different circumstances:Error (primarily for serialization issues)ValueError (when providing invalid country codes and sunrise/sunset values)TypeError DateError (a new type, used for unrecoverable errors that are specific to the extension)DateRangeError (also a new type, primarily for reporting integer time values that are outside the range supported by the extension)DateException is a new interface for runtime exceptions:DateInvalidTimeZeonExceptionDateInvalidOperationExceptionDateMalformedStringExceptionDateMalformedIntervalStringExceptionDateMalformedPeriodStringExceptionThere are a limited number of BC-incompatible changes arising from this:Previously, a ValueError with the message Epoch doesn't fit in a PHP integer could be raised. With this change, that error becomes a DateRangeError, which does not extend ValueError. If you were catching this specific one, you will needBuffer for Google Chrome - Extension Download
It behaves like the non-buffered version, only differing in its ability to be called with a buffer as input instead of a file. The buffer is provided by the in argument of size sz. The buffer must be in PEM format and start with the subject’s certificate, ending with the root certificate. Please see the examples for proper usage.intwolfSSL_UnloadCertsKeys(WOLFSSL * )This function unloads any certificates or keys that SSL owns.intwolfSSL_GetIVSize(WOLFSSL * )Returns the iv_size member of the specs structure held in the WOLFSSL struct.voidwolfSSL_KeepArrays(WOLFSSL * )Normally, at the end of the SSL handshake, wolfSSL frees temporary arrays. Calling this function before the handshake begins will prevent wolfSSL from freeing temporary arrays. Temporary arrays may be needed for things such as wolfSSL_get_keys() or PSK hints. When the user is done with temporary arrays, either wolfSSL_FreeArrays() may be called to free the resources immediately, or alternatively the resources will be freed when the associated SSL object is freed.voidwolfSSL_FreeArrays(WOLFSSL * )Normally, at the end of the SSL handshake, wolfSSL frees temporary arrays. If wolfSSL_KeepArrays() has been called before the handshake, wolfSSL will not free temporary arrays. This function explicitly frees temporary arrays and should be called when the user is done with temporary arrays and does not want to wait for the SSL object to be freed to free these resources.intwolfSSL_DeriveTlsKeys(unsigned char * key_data, word32 keyLen, const unsigned char * ms, word32 msLen, const unsigned char * sr, const unsigned char * cr, int tls1_2, int hash_type)An external facing wrapper to derive TLS Keys.intwolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 * x509, int nid, int lastPos)This function looks for and returns the extension index matching the passed in NID value.void *wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509 * x509, int nid, int * c, int * idx)This function looks for and returns the extension matching the passed in NID value.intwolfSSL_X509_digest(const WOLFSSL_X509 * x509,Protocol Buffer Extension for PostgreSQL - GeeksforGeeks
Skip to main content This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support. Summary of Debugger Extensions in Wdfkd.dll Article12/15/2021 In this article -->The Windows Driver Kit (WDK) includes a debugger extension library, named Wdfkd.dll. This library contains debugger extension commands that you can use to debug both Kernel-Mode Driver Framework (KMDF) and User-Mode Driver Framework (UMDF) drivers starting with version 2.For a complete description of each command, see Windows Driver Framework Extensions (Wdfkd.dll). For more information about all available debugger extension libraries, see the documentation that is supplied with the Windows Debugging package.You can find a video series that demonstrates how to debug a KMDF driver at Videos: Debugging KMDF Drivers.To debug a driver that uses UMDF version 1.11 or earlier, you must instead use the Wudfext.dll debugger extension library. For more info, see User-Mode Driver Framework Extensions (Wudfext.dll).The extension commands that the Wdfkd.dll extension library provides include:ExtensionDescriptionFrameworks!wdfkd.wdfhelp](../debuggercmds/-wdfkd-wdfhelp.md)" data-linktype="absolute-path">!wdfkd.wdfhelpDisplays this list of debugger extensions.!wdfkd.wdfchildlist](../debuggercmds/-wdfkd-wdfchildlist.md)" data-linktype="absolute-path">!wdfkd.wdfchildlistDisplays a child list's state and information about all of the device identification descriptions that are in the child list.KMDF!wdfkd.wdfcollection](../debuggercmds/-wdfkd-wdfcollection.md)" data-linktype="absolute-path">!wdfkd.wdfcollectionDisplays the objects that are contained in a collection.KMDFUMDF 2!wdfkd.wdfcommonbuffer](../debuggercmds/-wdfkd-wdfcommonbuffer.md)" data-linktype="absolute-path">!wdfkd.wdfcommonbufferDisplays information about a common buffer object.KMDFUMDF 2!wdfkd.wdfcrashdump](../debuggercmds/-wdfkd-wdfcrashdump.md)" data-linktype="absolute-path">!wdfkd.wdfcrashdumpDisplays the framework's event log records, if available, from a small memory dump. The framework's event log records are available if ForceLogsInMiniDump is set in the registry, or if the framework can determine that your driver caused the bug check.KMDF!wdfkd.wdfdevext](../debuggercmds/-wdfkd-wdfdevext.md)" data-linktype="absolute-path">!wdfkd.wdfdevextDisplays the WDFDEVICE-typed object handle that is associated with the DeviceExtension member of a Microsoft Windows Driver Model (WDM) DEVICE_OBJECT](/windows-hardware/drivers/ddi/wdm/ns-wdm-_device_object)" data-linktype="absolute-path">DEVICE_OBJECT structure.KMDFUMDF 1UMDF 2!wdfkd.wdfdevice](../debuggercmds/-wdfkd-wdfdevice.md)" data-linktype="absolute-path">!wdfkd.wdfdeviceDisplays information that is associated with a WDFDEVICE-typed handle.KMDFUMDF 2!wdfkd.wdfdeviceinterrupts](../debuggercmds/-wdfkd-wdfdeviceinterrupts.md)" data-linktype="absolute-path">!wdfkd.wdfdeviceinterruptsDisplays all the interrupt objects for a specified device handleKMDFUMDF 2!wdfkd.wdfdevicequeues](../debuggercmds/-wdfkd-wdfdevicequeues.md)" data-linktype="absolute-path">!wdfkd.wdfdevicequeuesDisplays information about all of the queue objects that belong to a specified device.KMDFUMDF 2!wdfkd.wdfdmaenabler](../debuggercmds/-wdfkd-wdfdmaenabler.md)" data-linktype="absolute-path">!wdfkd.wdfdmaenablerDisplays information about a DMA enabler object, along with its associated DMA transaction objects and common buffer objects.KMDF!wdfkd.wdfdmaenablers](../debuggercmds/-wdfkd-wdfdmaenablers.md)" data-linktype="absolute-path">!wdfkd.wdfdmaenablersDisplays a summary of all DMA enabler objects, DMA transaction objects, and common buffer objects that are associated with a specified device object.KMDF!wdfkd.wdfdmatransaction](../debuggercmds/-wdfkd-wdfdmatransaction.md)" data-linktype="absolute-path">!wdfkd.wdfdmatransactionDisplays information about a WDF direct memory access (DMA) transaction object.KMDF!wdfkd.wdfdriverinfo](../debuggercmds/-wdfkd-wdfdriverinfo.md)" data-linktype="absolute-path">!wdfkd.wdfdriverinfoDisplays information about a framework-based driver, such as its library version and hierarchy of object handles.KMDFUMDF 2!wdfkd.wdfextendwatchdog](../debuggercmds/-wdfkd-wdfextendwatchdog.md)" data-linktype="absolute-path">!wdfkd.wdfextendwatchdogExtends the time-out period (from 10 minutes to 24 hours) of the framework's watchdog timer during power transitions.KMDF!wdfkd.wdffindobjects](../debuggercmds/-wdfkd-wdffindobjects.md)" data-linktype="absolute-path">!wdfkd.wdffindobjectsFinds and displays framework objects.KMDFUMDF 2!wdfkd.wdfforwardprogress](../debuggercmds/-wdfkd-wdfforwardprogress.md)" data-linktype="absolute-path">!wdfkd.wdfforwardprogressDisplays. jwplayer buffer booster is a Chrome extension that aims to enhance the buffering capabilities of the popular video player, jwplayer. With this extension installed, the buffering time of videosComments
You could upload Silverlight files to images and documents library of custom type where you do not have restriction about the extension of a file, but most probably the application will not work. The best way at this stage is uploading the application somewhere in your project - say in a root folder called SilverlightApplications.Is this zip & extract functionality available via an API, and are there any examples or documentation?Below is a sample code that illustrates using of ZipManager class.private void UploadFiles(ILibrary library) { foreach (UploadedFile file in RadUploadControl.UploadedFiles) { ZipManager zipManager = new ZipManager(); IZipArchive zipArchive = zipManager.GetZipArchive(file.InputStream); IAbstractFile[] archive = zipArchive.GetFiles(true); long filesSize = 0; if (library.MaxSize > 0) { foreach (IAbstractFile item in archive) { filesSize += item.Size; if (filesSize > library.MaxSize) { HttpContext.Current.Response.Write("FILE SIZE PROBLEM"); return; } } } int i = -1; foreach (IAbstractFile item in archive) { i++; double percentIncrement = 100 / (double)archive.Length; progress["PrimaryTotal"] = archive.Length.ToString(); if (i != 0) progress["PrimaryPercent"] = ((int)(i * percentIncrement)).ToString(); progress["PrimaryValue"] = (i + 1).ToString(); string extension = String.Empty; string name; string itemName = item.FullName.Substring(item.RootFolder.FullName.Length - 1); if (item.Name.LastIndexOf(".") != -1) { extension = item.Name.Substring(item.Name.LastIndexOf('.')); name = item.Name.Remove(item.Name.LastIndexOf(".")); } else name = item.Name; Stream str = item.OpenRead(); byte[] buffer = new byte[item.Size]; long position = 0; int currentByte = str.ReadByte(); while (currentByte != -1) { buffer[position++] = (byte)currentByte; currentByte = str.ReadByte(); } try { this.manager = new LibraryManager(); // JUST FOR THE SAMPLE //ILibrary lib = manager.GetLibrary("silverlight"); //or set it from the parameter. itemId = manager.UploadFile(buffer, name, extension, MimeMapper.GetMimeMapping(item.Name), item.Size, library).ID; uploadedFileIDs.Add(itemId.ToString()); } catch (ArgumentException) { FilesToUpload.Add(itemName, "NOT VALID"); continue; } catch (Exception) { FilesToUpload.Add(itemName, "UNKNOWN"); continue; } if (itemId != Guid.Empty) FilesToUpload.Add(itemId.ToString(), "SUCCESSFULL"); else FilesToUpload.Add(itemName, "UNKNOWN"); } } foreach (UploadedFile file in RadUploadControl.InvalidFiles) { if (!file.GetExtension().Equals(".zip", StringComparison.OrdinalIgnoreCase)) { HttpContext.Current.Response.Write("NOT VALID EXTENSION"); return; } } } private LibraryManager manager; private Liststring> uploadedFileIDs = new Liststring>(); private Guid itemId; // just for the the sample private RadUpload RadUploadControl;
2025-04-08= 30%, 4 = 40%)0 = starts the video over at 0:00 = pauses/unpauses the videoHere are even more shortcuts for YouTube, courtesy of Hong Kiat.Keyboard shortcuts for Google+Like most Google products, Google+ has some handy shortcuts for faster use. Try any of these from inside your Google+ account.left arrow = Navigates to the menu at the left side of the page (e.g., Home, Photos), and you can scroll this list with the up/down arrows./ = selects the search box at the top of the pagej/k = moves up/down in the streamYou can access the full list of Google+ shortcuts from any G+ page by typing a question mark.Keyboard shortcut for the Buffer extensionThis is one of our favorite tips to use with Buffer. When you’ve installed the Buffer browser extension, you can activate your Buffer composer with a simple hotkey from any website at all. The shortcut is customizable in the Buffer extension settings, but it defaults to this:+bKeyboard shortcuts for WordPressWe use WordPress every day for composing our blog posts here at Buffer, so we’ve picked up a few tricks along the way. If you ever want to view the full list of keyboard shortcuts inside your WordPress editor, click on the question mark icon from the editor menu.Here are a few of my personal favorites:+ 2, 3, or 4 = Heading 2, 3, or 4 wherever your cursor currently is++a = add a link++m = insert an image(I use distraction-free writing mode when I’m composing in WordPress, and there’s a neat shortcut that lets you resize the width of the distraction-free editor. Press +plus/minus to change the width.)To see the full list of WordPress shortcuts, you can click the question mark icon in the menu bar of your post editor, or use the shortcut ++h.Keyboard shortcuts for PocketI’ve found Pocket to be an ideal part of my researching and reading habit, and it’s great to learn new ways to make this tool even more useful. Here are a couple.+1 = go to homepage+2 = go to favorites+3 = go to archivea = Archivef = FavoriteThe complete list of keyboard shortcuts can be found here.Keyboard shortcuts for MacWe are pretty big Apple fans at Buffer. Our setups include Macbook Airs and Macbook Pros, and we’ve learned some pretty nifty tricks to fly through our workflows just as fast as possible. Here are a few of our favorite tips:+
2025-04-15Fit), but without the environment variable, the setting is now empty. As of PHP 8.3, you can now specify a fallback value to use, using the :- notation that you may have used with Bash configuration or Makefiles:xdebug.client_host = "${XDEBUG_CLIENT_HOST:-localhost}" This can be particularly useful for defining deployment defaults, but allowing different environments (e.g., development, staging, CI/CD, etc.) to override the value via ENV variables.gc_status() Extended InformationThe function gc_status() returns an associative array. Prior to PHP 8.3, the array included the following:runs (int): number of times GC has occurredcollected (int): number of objects collectedthreshold (int): number of roots in the buffer that will trigger GC.roots (int): total number of roots in the bufferPHP 8.3 expands this with 8 more keys:running (bool)protected (bool): Whether or not the GC is protected and forbidding root additions.full (bool): whether or not the GC buffer exceeds GC_MAX_BUF_SIZE.buffer_size (int): current GC buffer size.application_time (float): total application time, in secondscollector_time (float): time spent collecting cycles, in secondsdestructor_time (float): time spent executing destructors during collection, in secondsfree_time (float): time spent freeing values during collection, in secondsThis change primarily affects tools that monitor applications, including profilers and debuggers. Lint More Than One File at a TimeThe -l switch to the PHP CLI binary allows you to lint a PHP file to ensure it has no syntax errors: php -l index.phpPrevious to PHP 8.3, it only allowed you to lint one file at a time, which meant you had to invoke it once per application file if you wanted to check an entire project. As of PHP 8.3, it now allows you to pass multiple files:php -l src/**/*.phpUse Exceptions by Default in SQLite3 ExtensionWhile PDO and several database extensions are already emitting exceptions by default in PHP 8, the SQLite3 extension has not. PHP 8.3 introduces SQLite3Exception, and alters the behavior of the extension when SQLite3::enableExceptions(true) is called to emit this extension-specific exception (instead of a generic Exception). Additionally, calling SQLite3::enableExceptions(false)will now raise anE_DEPRECATED error.Starting in PHP 9.0, the extension will always raise exceptions. Calling SQLite3::enableExceptions(true) will raise an E_DEPRECATED error, and calling SQLite3::enableExceptions(false) will raise a fatal error. PHP 10.0 will remove the SQLite3::enableExceptions()method entirely.Full notes on this change >>More Appropriate Date/Time ExceptionsThe Date/Time extension has been throwing exceptions and errors, but using the most generic Exception and Error types. As of PHP 8.3, it will use a more fine-grained approach, raising any of the following under different circumstances:Error (primarily for serialization issues)ValueError (when providing invalid country codes and sunrise/sunset values)TypeError DateError (a new type, used for unrecoverable errors that are specific to the extension)DateRangeError (also a new type, primarily for reporting integer time values that are outside the range supported by the extension)DateException is a new interface for runtime exceptions:DateInvalidTimeZeonExceptionDateInvalidOperationExceptionDateMalformedStringExceptionDateMalformedIntervalStringExceptionDateMalformedPeriodStringExceptionThere are a limited number of BC-incompatible changes arising from this:Previously, a ValueError with the message Epoch doesn't fit in a PHP integer could be raised. With this change, that error becomes a DateRangeError, which does not extend ValueError. If you were catching this specific one, you will need
2025-03-29It behaves like the non-buffered version, only differing in its ability to be called with a buffer as input instead of a file. The buffer is provided by the in argument of size sz. The buffer must be in PEM format and start with the subject’s certificate, ending with the root certificate. Please see the examples for proper usage.intwolfSSL_UnloadCertsKeys(WOLFSSL * )This function unloads any certificates or keys that SSL owns.intwolfSSL_GetIVSize(WOLFSSL * )Returns the iv_size member of the specs structure held in the WOLFSSL struct.voidwolfSSL_KeepArrays(WOLFSSL * )Normally, at the end of the SSL handshake, wolfSSL frees temporary arrays. Calling this function before the handshake begins will prevent wolfSSL from freeing temporary arrays. Temporary arrays may be needed for things such as wolfSSL_get_keys() or PSK hints. When the user is done with temporary arrays, either wolfSSL_FreeArrays() may be called to free the resources immediately, or alternatively the resources will be freed when the associated SSL object is freed.voidwolfSSL_FreeArrays(WOLFSSL * )Normally, at the end of the SSL handshake, wolfSSL frees temporary arrays. If wolfSSL_KeepArrays() has been called before the handshake, wolfSSL will not free temporary arrays. This function explicitly frees temporary arrays and should be called when the user is done with temporary arrays and does not want to wait for the SSL object to be freed to free these resources.intwolfSSL_DeriveTlsKeys(unsigned char * key_data, word32 keyLen, const unsigned char * ms, word32 msLen, const unsigned char * sr, const unsigned char * cr, int tls1_2, int hash_type)An external facing wrapper to derive TLS Keys.intwolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 * x509, int nid, int lastPos)This function looks for and returns the extension index matching the passed in NID value.void *wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509 * x509, int nid, int * c, int * idx)This function looks for and returns the extension matching the passed in NID value.intwolfSSL_X509_digest(const WOLFSSL_X509 * x509,
2025-03-28There is an excellent article on working with IFilters in C#: Implementing a TextReader to extract various files contents using IFilter - CodeProjectAs Adobe Reader XI IFilter doesn't support IPersistFile.Load(..) anymore because of Microsoft's requirement for IFilters to work with stream data instead of file data, it's a problem for custom file search engines like those built using Lucene.net. The main point here is that you need to use IPersistStream for Adobe PDF IFilter 11.x instead of IPersistStore.Here's a relevant discussion on the related topic at StackOverflow: used these two sets of recommendations to re-write the way how IFilter is obtained for PDF files. Obviously this solution isn't the best one (one could just provide bytes to FilterLoader instead), but at least it works (and doesn't break the logic).There is also no check if filter is Adobe's or not, but such check should be done, as other PDF IFilters might not support IPersistStream. One should also check for its version (e.g., Adobe PDF IFilter 9.x supports IPersistFile w/o any problems).Here's the updated code:public static IFilter LoadIFilterFromIPersistFile(string path, string extension) { var fileExt = System.IO.Path.GetExtension(path); IFilter filter = LoadIFilter(extension); if (null == filter) return null; if (fileExt == ".pdf") { using (var s = new FileStream(path, FileMode.Open)) { byte[] buffer = new byte[s.Length]; s.Read(buffer, 0, buffer.Length); IntPtr nativePtr = Marshal.AllocHGlobal(buffer.Length); Marshal.Copy(buffer, 0, nativePtr, buffer.Length); System.Runtime.InteropServices.ComTypes.IStream comStream; CreateStreamOnHGlobal(nativePtr, true, out comStream); var persistStream = (IPersistStream)filter; if (null == persistStream) throw new Exception("IPersistStream is not implemented by the current interface"); persistStream.Load(comStream); return InitIFilterForPdf(filter); } } else { var persistFile = (filter as IPersistFile); if (null == persistFile) throw new Exception("IPersistFile is not implemented by the current interface"); persistFile.Load(path, 0); return InitIFilter(filter); } }
2025-04-19Image” button as you hover over any image on a page. Here’s an example:Click this button, or right-click on the image you’d like to share, and you’ll see a drop-down menu with the options to “Create Post” or “Save For Later.” This brings up the Buffer tab where you can choose Pinterest as your social media account of choice, then choose the board you’d like to share to.By default, Buffer pulls in the article’s headline and link as your Pin’s description. Within our composer, you can easily crop your photos, choose the Pinterest board you’d like to share to, and add a destination link, pin title, and description.Let’s see this scheduling feature in action: With the Buffer browser extension installed, you’ll also be able to find great content on Pinterest and queue up a new Pin to share later. Hover over any image you see on Pinterest, and you’ll see the Buffer icon on the bottom right like so:Click it to pull up a Buffer tab where you can choose your board and share your Pin.The Pin will go into your queue as a scheduled post! (One note here: It won’t look quite the same as a repin from Pinterest itself; more like content you’re Pinning for the first time.)Finally, you can also upload a new image from your computer to schedule through the Buffer dashboard.Optimizing your Pinterest scheduleCustomize the specific times and days you Pin to create unique posting schedules just for you and your Boards to streamline your workflow.In your Buffer queue, you can view, rearrange and edit your queued posts anytime based on your current content strategy.Tracking the performance of your Pinterest contentYou can view basic Pinterest analytics for each of your posts' metrics (repins) by heading to the Publishing tab and then the Sent tab.On your mark, get set, Pin!We can’t wait to hear how you’ll use this integration and our scheduling tool for your social media sharing. Ready to get started?For even more optimization tips for using Buffer and Pinterest together, check out our guide on how to use Pinterest.If you have questions or thoughts
2025-04-22