Snippets Collections
#include <stdio.h>
#include <string.h>

int i, mot, caractere;
char ch[100];
int main() {
    
    printf("Entrer la chaine de caracteres : ");
    gets(ch);

   // Calcul du nombre de caractères
    caractere = 0;
    for (i = 0; ch[i] != '\0'; i++) {
        if (ch[i] != ' ' && ch[i] != '\n' && ch[i] != '\t') {
            caractere++;
        }
    }
   
   
   // Calcul du nombre de mots
   mot = 1;
   for (i = 0; ch[i] != '\0'; i++) {
        if (ch[i] == ' ' || ch[i] == '\n' || ch[i] == '\t') {
            mot++;
        }
    }
    printf("Le nombre de mots dans la chaine de caracteres est : %d\n", mot);
     printf("Le nombre de caracteres dans la chaine de caracteres est : %d", caractere);
    return 0;
}





// Custom accordion Shortcode: [accordion_shortcode]
function my_custom_shortcode_function() {	
	$repeater_field = get_field('accordion');
	if ($repeater_field) {
	?>
	<div class="accordionOtrDiv" >
		<?php
		$aria = 1;
		foreach ($repeater_field as $row) {
			$heading_element = $row['accordion_heading'];
			$wysiwyg_editor = $row['accordion_text'];
		?>
		<div class="accordionInrDiv" >		
			<div class="accordionItem">
				<button aria-expanded="false" aria-controls="<?php echo 'tab-title-'.$aria; ?>" class="accordionTitle"> <?php echo $heading_element; ?></button>
				<div class="accordionContent" aria-labelledby="<?php echo 'tab-title-'.$aria; ?>">
					<?php echo $wysiwyg_editor; ?>
				</div>
			</div>		
		</div>
	<?php			
			$aria++;
		}
		?>
	</div>
		<?php
	}	
}
add_shortcode('accordion_shortcode', 'my_custom_shortcode_function');


return [
  ...
  'providers' => [
    ...
    \Intervention\Image\ImageServiceProvider::class,
  ],
  'aliases' => Facade::defaultAliases()->merge([
        ...
        'Image' => \Intervention\Image\Facades\Image::class,
    ])->toArray(),
]
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ImageController extends Controller 
{
    public function compressImage(Request $request) 
    {
        $this->validate($request, [
            'image' => 'required|image|mimes:jpg,jpeg,png,gif,svg|max:2048'
        ]);

        $image = $request->file['image'];
        /* 
            Note: Use $image = base64_decode($request['image'])
            if the image is sent as a base64 encoded image.
        */
        $image_name = time().'_'.$image->getClientOriginalName();
        $path = public_path('uploads/') . "/" . $image_name;

        Image::make($image->getRealPath())->resize(150, 150)->save($path);
      
        return response()->json(
            [
                'data' => 'Image compressed and added'
            ], 
            201
        );
    }
}
<h1 ><center> <i><u>   my name is rohith </u></i>
        </center>       
        <hr>
       
    </h1>
    
    <ul type="square">
        
        <li> 
            
           <h2>   my favourite books </h2>
            
            <ul type="disc">
                <li> sapiens </li>
                <li> psychology of money</li>
                <li> thinking fast and slow </li>
            </ul>
        </li>
        
        
        <li>
        
            <h2>
                my favorite writers
            </h2>
            
            
                <ul type="circle">
                <li> rabindranath tagore </li>
                <li> j.k rowling </li>
                <li> abdul kalam </li>
            </ul> 
            
              </li>  
            
        
        
    </ul>
    
   <ol type="I" >
     
        <li>
        
          <h2>
              my favorute subjects
            </h2>
        <ol type="a" >
            <li> dbms</li>
            <li> data structures</li>
            <li> COA </li>
            </ol>
            
        </li>
        
        <li>
        
        <h2>
            my favorite movies
            </h2>
        <ol type="1" start="4" >
            <li> amores perros</li>
            <li> blackmail</li>
            <li> inception</li>
            </ol>
        
        </li>           
        
        
    </ol>
Route::get('/', function (Request $request) {
    $location_text = "The IP address {$request->ipinfo->ip}.";
    return view('index', ['location' => $location_text]);
});
protected $middleware = [
    ...
    \ipinfo\ipinfolaravel\ipinfolaravel::class,
];
\app\Http\Kernel.php
<h1 ><center> <i><u>   my name is rohith </u></i>
        </center>       
        <hr>
       
    </h1>
    
    <ul type="square">
        <li> 
            
           <h2>   my favourite books </h2>
            
            <ul type="disc">
                <li> sapiens </li>
                <li> psychology of money</li>
                <li> thinking fast and slow </li>
            </ul>
        
        </li>
        
        <li>
        
            <h2>
                my favorite writers
            </h2>
            
            
                <ul type="circle">
                <li> rabindranath tagore </li>
                <li> j.k rowling </li>
                <li> abdul kalam </li>
            </ul> 
                
            
        </li>
    </ul>
    
    <ol type="I" >
     
        <li>
        
          <h2>
              my favorute subjects
            </h2>
        <ul type="a" >
            <li> dbms</li>
            <li> data structures</li>
            <li> COA </li>
            </ul>
            
        </li>
        
        <li>
        
        <h2>
            my favorite movies
            </h2>
        <ul type="1" start="4" >
            <li> amores perros</li>
            <li> blackmail</li>
            <li> inception</li>
            </ul>
        
        </li>           
        
        
    </ol>
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See https://apps.db.ripe.net/docs/HTML-Terms-And-Conditions

% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.

% Information related to '::/0'

% No abuse contact registered for ::/0

inet6num:       ::/0
netname:        IANA-BLK
descr:          The whole IPv6 address space
country:        EU # Country is really world wide
org:            ORG-IANA1-RIPE
admin-c:        IANA1-RIPE
tech-c:         CREW-RIPE
tech-c:         OPS4-RIPE
mnt-by:         RIPE-NCC-HM-MNT
mnt-lower:      RIPE-NCC-HM-MNT
status:         ALLOCATED-BY-RIR
remarks:        This network is not allocated.
                This object is here for Database
                consistency and to allow hierarchical
                authorisation checks.
created:        2002-08-05T10:21:17Z
last-modified:  2022-05-23T14:49:16Z
source:         RIPE

organisation:   ORG-IANA1-RIPE
org-name:       Internet Assigned Numbers Authority
org-type:       IANA
address:        see http://www.iana.org
remarks:        The IANA allocates IP addresses and AS number blocks to RIRs
remarks:        see http://www.iana.org/numbers
admin-c:        IANA1-RIPE
tech-c:         IANA1-RIPE
mnt-ref:        RIPE-NCC-HM-MNT
mnt-by:         RIPE-NCC-HM-MNT
created:        2004-04-17T09:57:29Z
last-modified:  2013-07-22T12:03:42Z
source:         RIPE # Filtered

role:           RIPE NCC Registration Services Department
address:        RIPE Network Coordination Centre
address:        P.O. Box 10096
address:        1001 EB Amsterdam
address:        the Netherlands
phone:          +31 20 535 4444
fax-no:         +31 20 535 4445
org:            ORG-NCC1-RIPE
admin-c:        MSCH2-RIPE
tech-c:         KL1200-RIPE
tech-c:         XAV
tech-c:         MPRA-RIPE
tech-c:         EM12679-RIPE
tech-c:         KOOP-RIPE
tech-c:         RS23393-RIPE
tech-c:         SPEN
tech-c:         LH47-RIPE
tech-c:         TORL
tech-c:         ME3132-RIPE
tech-c:         JW1966
tech-c:         AD11
tech-c:         HUW
tech-c:         CP11558-RIPE
tech-c:         PH7311-RIPE
tech-c:         KW2814-RIPE
tech-c:         SF9489-RIPE
tech-c:         MK23135-RIPE
tech-c:         OE1366-RIPE
tech-c:         CBT18-RIPE
tech-c:         CG12576-RIPE
tech-c:         RS26744-RIPE
nic-hdl:        CREW-RIPE
abuse-mailbox:  abuse@ripe.net
mnt-by:         RIPE-NCC-HM-MNT
created:        2002-09-23T10:13:06Z
last-modified:  2023-08-29T11:33:21Z
source:         RIPE # Filtered

role:           Internet Assigned Numbers Authority
address:        see http://www.iana.org.
admin-c:        IANA1-RIPE
tech-c:         IANA1-RIPE
nic-hdl:        IANA1-RIPE
remarks:        For more information on IANA services
remarks:        go to IANA web site at http://www.iana.org.
mnt-by:         RIPE-NCC-MNT
created:        1970-01-01T00:00:00Z
last-modified:  2001-09-22T09:31:27Z
source:         RIPE # Filtered

role:           RIPE NCC Operations
address:        Stationsplein 11
address:        1012 AB Amsterdam
address:        The Netherlands
phone:          +31 20 535 4444
fax-no:         +31 20 535 4445
abuse-mailbox:  abuse@ripe.net
admin-c:        BRD-RIPE
tech-c:         GL7321-RIPE
tech-c:         MENN1-RIPE
tech-c:         RCO-RIPE
tech-c:         CNAG-RIPE
tech-c:         SO2011-RIPE
tech-c:         TOL666-RIPE
tech-c:         ADM6699-RIPE
tech-c:         TIB-RIPE
tech-c:         SG16480-RIPE
tech-c:         RDM397-RIPE
nic-hdl:        OPS4-RIPE
mnt-by:         RIPE-NCC-MNT
created:        2002-09-16T10:35:19Z
last-modified:  2019-06-05T11:01:30Z
source:         RIPE # Filtered

% This query was served by the RIPE Database Query Service version 1.109.1 (SHETLAND)

$ curl "https://api.ip2location.io/?key={YOUR_API_KEY}&ip=2607:fea8:f18d:9e00:7053:68f5:5d77:cc0c"
const truncate = (str, n) => {
  return str?.length > n ? str.substr(0, n - 1) + " ..." : str;
}
trigger ClosedOpportunityTrigger on Opportunity (after insert, after update) {
    
        List<Task> tasklist=new List<Task>();
    
        for(Opportunity opp: [SELECT Id, StageName FROM Opportunity WHERE StageName='Closed Won'
                              AND Id IN : Trigger.New])
          tasklist.add(new Task (Subject='Follow Up Test Task', WhatId=opp.Id));
                 
          if(tasklist.size() > 0) {
             insert tasklist;
          }
}
      <FormLayoutSection className="Location-Info" title="Location Info">
        <div className="mb-5">
          <div className="inline-flex justify-between w-full">
            <div className="block mb-1 text-sm font-semibold text-gray-700 dark:text-gray-100">
              County FIPS(s):
              <span className="text-red-500 text-md">{`  `}*</span>
            </div>
            <Tooltip
              className="-mt-1"
              direction="left"
              content="This is a 6-digit numeric code identifying the geographic area for where you want to send the alert - the 5-digit numeric code must be prefaced with an additional zero"
            />
          </div>
          {/* {FIPSList.map(fipsCode => (
            <div key={fipsCode}>
              <input
                type="checkbox"
                id={fipsCode}
                name="CountyFIPS"
                value={fipsCode}
                ref={register({ required: true })}
                onChange={() => handleSelect(fipsCode)}
                checked={selectedOptions.includes(fipsCode)}
              />
              <label htmlFor={fipsCode}>
                {fipsCode} - {findFipsCodeName(fipsCode)}, {findFipsCodeState(fipsCode)}
              </label>
            </div>
          ))} */}
          {/* {FIPSList.map(fipsCode => (
            <div key={fipsCode}>
              <Checkbox
                id={fipsCode}
                name="CountyFIPS"
                value={fipsCode}
                ref={register({ required: true })}
                defaultChecked={false}
              >
                {fipsCode} - {findFipsCodeName(fipsCode)}, {findFipsCodeState(fipsCode)}
              </Checkbox>
            </div>
          ))} */}
        </div>
        <div className="mb-5">
          <Controller
            name="CountyFIPS"
            control={control}
            defaultValue={[]}
            render={({ ...field }) => (
              <div>
                {FIPSList.map(fipsCode => (
                  <label key={fipsCode} className="inline-flex items-center">
                    <input
                      className="rounded border-gray-300 focus:ring-2 focus:ring-opacity-50"
                      type="checkbox"
                      {...field}
                      value={fipsCode}
                      checked={field.value.includes(fipsCode)}
                      onChange={e => {
                        const selectedOptions = [...field.value]
                        if (e.target.checked) {
                          selectedOptions.push(fipsCode)
                        } else {
                          const index = selectedOptions.indexOf(fipsCode)
                          if (index > -1) {
                            selectedOptions.splice(index, 1)
                          }
                        }
                        field.onChange(selectedOptions)
                      }}
                    />
                    <span className="mx-2 text-sm">
                      {fipsCode} - {findFipsCodeName(fipsCode)},{' '}
                      {findFipsCodeState(fipsCode)}
                    </span>
                  </label>
                ))}
              </div>
            )}
          />
          {/* <MultiSelect
            id="CountyFIPS"
            ref={register({ required: true })}
            name="CountyFIPS"
            label="OCV County FIPS(s):"
            labelTooltipComponent={
              <Tooltip
                content="This is a 6-digit numeric code identifying the geographic area for where you want to send the alert - the 5-digit numeric code must be prefaced with an additional zero"
                direction="left"
              />
            }
            required
            multiple
            onChange={event => {
              if (event.target.value === 'Select FIPS Code') {
                setError('CountyFIPS', {
                  type: 'manual',
                  message: 'Please select the FIPS Code',
                })
              }
            }}
            onBlur={event => {
              if (event.target.value === 'Select FIPS Code') {
                setError('CountyFIPS', {
                  type: 'manual',
                  message: 'Please select the FIPS Code',
                })
              }
            }}
            value={FIPSList}
          >
            <option defaultValue="">Select FIPS Code</option>
            {FIPSList.map((fipsCode, index) => (
              <option key={index} value={fipsCode}>
                {fipsCode} - {findFipsCodeName(fipsCode)}, {findFipsCodeState(fipsCode)}
              </option>
            ))}
            {!FIPSList.length && (
              <option defaultValue="">No FIPS Codes. Please add in settings.</option>
            )}
          </MultiSelect> */}
          <p className="text-sm text-red-500">
            {errors.CountyFIPS && errors.CountyFIPS.message}
          </p>
        </div>
        <div className="mb-5">
          <p className="block text-sm font-semibold text-gray-700 dark:text-gray-100">
            Validation Info:{' '}
            <span className="text-sm font-semibold text-red-500">
              {locationPoints > 100 &&
                'More than 100 points added please remove locations.'}{' '}
              {locationShapes > 10 &&
                'More than 10 shapes added please remove locations.'}
            </span>
          </p>
          <p className="text-sm font-semibold text-gray-700 dark:text-gray-100">
            {locationPoints} Points - {locationShapes} Shapes
          </p>
        </div>
        {!locationShapes && (
          <div className="px-2 py-1 bg-yellow-700 rounded-md mb-5">
            <p className="text-md font-semibold text-gray-100">
              Note: If no shape is selected, the notification will go to the entire FIPS
              Code.
            </p>
          </div>
        )}

        {/* {notificationType === 'IPAWS' && (
            //   <Input
            //     id="CountyFIPS"
            //     name="CountyFIPS"
            //     type="number"
            //     onBlur={e =>
            //       e.target.removeEventListener('wheel', function (e) {
            //         e.preventDefault()
            //       })
            //     }
            //     onFocus={e =>
            //       e.target.addEventListener(
            //         'wheel',
            //         function (e) {
            //           e.preventDefault()
            //         },
            //         { passive: false }
            //       )
            //     }
            //     label="County FIPS(s):"
            //     labelTooltipComponent={
            //       <Tooltip
            //         content="This is a 6-digit numeric code identifying the geographic area for where you want to send the alert - the 5-digit numeric code must be prefaced with an additional zero"
            //         direction="left"
            //       />
            //     }
            //     placeholder="######"
            //     required
            //     ref={register({
            //       required: true,
            //       validate: validateSixDigits,
            //     })}
            //     error={errors.FIPS ? errors.FIPS.message : ''}
            //   />
            // )}
            // {errors.CountyFIPS && (
            //   <p className="text-sm text-red-500">{errors.CountyFIPS.message}</p>*/}
        {/* <div className="mb-5">
          <NativeSelect
            id="CountyFIPS"
            ref={register({ required: true })}
            name="CountyFIPS"
            label="County FIPS(s):"
            labelTooltipComponent={
              <Tooltip
                content="This is a 6-digit numeric code identifying the geographic area for where you want to send the alert - the 5-digit numeric code must be prefaced with an additional zero"
                direction="left"
              />
            }
            required
            onChange={event => {
              if (event.target.value === 'Select FIPS Code') {
                setError('CountyFIPS', {
                  type: 'manual',
                  message: 'Please select the FIPS Code',
                })
              }
            }}
            onBlur={event => {
              if (event.target.value === 'Select FIPS Code') {
                setError('CountyFIPS', {
                  type: 'manual',
                  message: 'Please select the FIPS Code',
                })
              }
            }}
          >
            <option defaultValue="">Select FIPS Code</option>
            {FIPSList.map((fipsCode, index) => (
              <option key={index} value={fipsCode}>
                {fipsCode} - {findFipsCodeName(fipsCode)}, {findFipsCodeState(fipsCode)}
              </option>
            ))}
            {!FIPSList.length && (
              <option defaultValue="">No FIPS Codes. Please add in settings.</option>
            )}
          </NativeSelect>
          <p className="text-sm text-red-500">{errors.CountyFIPS && errors.CountyFIPS.message}</p>
        </div> */}
        {/* <MultiSelect options={FIPSList} onSelect={handleSelect} ref></MultiSelect> */}

        <div className="flex flex-col">
          <p className="block mb-1 text-sm font-semibold text-gray-700 dark:text-gray-100">
            Choose a Geographic Location
          </p>
          <Button
            onClick={mapModalState}
            icon={<Icon className="mr-2 -ml-1" name="globe" />}
          >
            Choose Location
          </Button>
        </div>
      </FormLayoutSection>
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See https://apps.db.ripe.net/docs/HTML-Terms-And-Conditions
% Note: this output has been filtered.
%       To receive output for a database update, use the "-B" flag.
% Information related to '::/0'
% No abuse contact registered for ::/0
inet6num:       ::/0
netname:        IANA-BLK
descr:          The whole IPv6 address space
country:        EU # Country is really world wide
org:            ORG-IANA1-RIPE
admin-c:        IANA1-RIPE
tech-c:         CREW-RIPE
tech-c:         OPS4-RIPE
mnt-by:         RIPE-NCC-HM-MNT
mnt-lower:      RIPE-NCC-HM-MNT
status:         ALLOCATED-BY-RIR
remarks:        This network is not allocated.
                This object is here for Database
                consistency and to allow hierarchical
                authorisation checks.
created:        2002-08-05T10:21:17Z
last-modified:  2022-05-23T14:49:16Z
source:         RIPE
organisation:   ORG-IANA1-RIPE
org-name:       Internet Assigned Numbers Authority
org-type:       IANA
address:        see http://www.iana.org
remarks:        The IANA allocates IP addresses and AS number blocks to RIRs
remarks:        see http://www.iana.org/numbers
admin-c:        IANA1-RIPE
tech-c:         IANA1-RIPE
mnt-ref:        RIPE-NCC-HM-MNT
mnt-by:         RIPE-NCC-HM-MNT
created:        2004-04-17T09:57:29Z
last-modified:  2013-07-22T12:03:42Z
source:         RIPE # Filtered
role:           RIPE NCC Registration Services Department
address:        RIPE Network Coordination Centre
address:        P.O. Box 10096
address:        1001 EB Amsterdam
address:        the Netherlands
phone:          +31 20 535 4444
fax-no:         +31 20 535 4445
org:            ORG-NCC1-RIPE
admin-c:        MSCH2-RIPE
tech-c:         KL1200-RIPE
tech-c:         XAV
tech-c:         MPRA-RIPE
tech-c:         EM12679-RIPE
tech-c:         KOOP-RIPE
tech-c:         RS23393-RIPE
tech-c:         SPEN
tech-c:         LH47-RIPE
tech-c:         TORL
tech-c:         ME3132-RIPE
tech-c:         JW1966
tech-c:         AD11
tech-c:         HUW
tech-c:         CP11558-RIPE
tech-c:         PH7311-RIPE
tech-c:         KW2814-RIPE
tech-c:         SF9489-RIPE
tech-c:         MK23135-RIPE
tech-c:         OE1366-RIPE
tech-c:         CBT18-RIPE
tech-c:         CG12576-RIPE
tech-c:         RS26744-RIPE
nic-hdl:        CREW-RIPE
abuse-mailbox:  abuse@ripe.net
mnt-by:         RIPE-NCC-HM-MNT
created:        2002-09-23T10:13:06Z
last-modified:  2023-08-29T11:33:21Z
source:         RIPE # Filtered
role:           Internet Assigned Numbers Authority
address:        see http://www.iana.org.
admin-c:        IANA1-RIPE
tech-c:         IANA1-RIPE
nic-hdl:        IANA1-RIPE
remarks:        For more information on IANA services
remarks:        go to IANA web site at http://www.iana.org.
mnt-by:         RIPE-NCC-MNT
created:        1970-01-01T00:00:00Z
last-modified:  2001-09-22T09:31:27Z
source:         RIPE # Filtered
role:           RIPE NCC Operations
address:        Stationsplein 11
address:        1012 AB Amsterdam
address:        The Netherlands
phone:          +31 20 535 4444
fax-no:         +31 20 535 4445
abuse-mailbox:  abuse@ripe.net
admin-c:        BRD-RIPE
tech-c:         GL7321-RIPE
tech-c:         MENN1-RIPE
tech-c:         RCO-RIPE
tech-c:         CNAG-RIPE
tech-c:         SO2011-RIPE
tech-c:         TOL666-RIPE
tech-c:         ADM6699-RIPE
tech-c:         TIB-RIPE
tech-c:         SG16480-RIPE
tech-c:         RDM397-RIPE
nic-hdl:        OPS4-RIPE
mnt-by:         RIPE-NCC-MNT
created:        2002-09-16T10:35:19Z
last-modified:  2019-06-05T11:01:30Z
source:         RIPE # Filtered
% This query was served by the RIPE Database Query Service version 1.109.1 (BUSA)
trigger AccountAddressTrigger on Account (before insert,before update) {
    for(Account acct:Trigger.New){
        if(acct.Match_Billing_Address__c=true && aacct.BillingPostalCode!=null){
            acct.shippingPostalCode=acct.BillingPostalCode;
        }
    }
}
28243689208aab2b40b9082a31c5383e
//fade out and hide a fixed element when you scroll to the bottom of the page (jQuery)

$(window).scroll(function(){
  var threshold = 200; // number of pixels before bottom of page that you want to start fading
  var op = (($(document).height() - $(window).height()) - $(window).scrollTop()) / threshold;
	if( op <= 0 ){
		$("#thing-to-hide").hide();
	} else {
		$("#thing-to-hide").show();
	}
	$("#thing-to-hide").css("opacity", op ); 
});
Sales % =

DIVIDE (
	[Total Sales],
	CALCULATE (
		[Total Sales],
		ALLSELECTED ( 'Product'[Brand])
		)
)
import random
import string

def serial_code(length):
    letters = string.hexdigits
    result_str = ''.join(random.choice(letters) for i in range(length))
    print("Your serial code is:-", result_str, '.')
from sys import path
import os
path.append(os.path.realpath('../'))
add_filter( 'woocommerce_product_export_column_names', 'add_slug_export_column' );
add_filter( 'woocommerce_product_export_product_default_columns', 'add_slug_export_column' );

function add_slug_export_column( $columns ) {
	$columns['slug'] = 'Slug';
 
	return $columns;
}

add_filter( 'woocommerce_product_export_product_column_slug'  , 'add_export_data_slug', 10, 2 );
function add_export_data_slug( $value, $product ) {
    $value = $product->get_slug();
	
    return $value;
}

add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_slug_import_option' );
function add_slug_import_option( $options ) {
  $options['slug'] = 'Slug';
 
  return $options;
}

add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'add_default_slug_column_mapping' );
function add_default_slug_column_mapping( $columns ) {
  $columns['Slug'] = 'slug';
 
  return $columns;
} 

add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import_product_slug_column', 10, 2 );
function process_import_product_slug_column( $object, $data ) {
  if ( !empty( $data['slug'] ) ) {
    $object->set_slug( $data['slug'] );
  }
 
  return $object;
}
Run df -h to verify your root partition is full (100%)
Run lsblk and then lsblk -f to get block device details
sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
sudo growpart /dev/DEVICE_ID PARTITION_NUMBER ex /dev/nvme0n1 1
lsblk to verify partition has expanded 
sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER ex /dev/nvme0n1p1
Run df -h to verify your resized disk
sudo umount /tmp
/**************************************
Hide the horizontal overflow sf.digital
Use freely in your CSS. Do not re-post.
**************************************/
html { overflow-x: hidden; }
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>
import java.util.Scanner;

public class javaBasics {
    public static void main(String args[]) {
     
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        int sum = a + b;
       
        System.out.println(sum);
   
    }
}

#include <stdio.h>

int N;
int main() {
    
    printf("Entrer le nombre N :");
    scanf("%d", &N);
    
    N / 2;
    
    if(N % 2 == 0){
        printf("Le nombre %d est paire.", N);
    }else{
        printf("Le nombre %d est impaire.", N);
    }
    
    return 0;
}
FastLED.clear(); //Clear the LED Array

 //A heart displays and beats across the Laser Stems
for (int i = 0; i < NUM_LEDS; i++){ // Cycle through each LED on the matrix
if (heart_small[i] == 1) {
leds[i] += CRGB::Red;
}
}

FastLED.show();
delay(500);

FastLED.clear(); //Clear the LED Array

for (int i = 0; i < NUM_LEDS; i++){ // Cycle through each LED on the matrix
if (heart_large[i] == 1) {
leds[i] += CRGB::Red;
}
}
FastLED.show();
delay(500);
// Array for the Small Heart Image
static uint8_t heart_small[NUM_LEDS] ={
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};

// Array for the Largest Heart Image
static uint8_t heart_large[NUM_LEDS] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
SimplePatternList gPatterns = { rainbow, rainbowWithGlitter, confetti, chasing, juggle, twinkle, bpm, animatedHeart };
FastLED.clear(); //Clear the LED Array

 //A heart displays and beats across the Laser Stems
for (int i = 0; i < NUM_LEDS; i++){ // Cycle through each LED on the matrix
if (heart_small[i] == 1) {
leds[i] += CRGB::Red;
}
}

FastLED.show();
delay(500);

FastLED.clear(); //Clear the LED Array

for (int i = 0; i < NUM_LEDS; i++){ // Cycle through each LED on the matrix
if (heart_large[i] == 1) {
leds[i] += CRGB::Red;
}
}
FastLED.show();
delay(500);
import java.util.Scanner; 
class HelloWorld {
    public static void main(String[] args) {
        
        int a[]=new int[5];
        Scanner r = new Scanner(System.in);
        System.out.print("Enter elements of arrays");
        
        for(int i=0;i<a.length;i++)
        {
            a[i]=r.nextInt();
        }
        System.out.println (" arrays");
        for(int i=0;i<a.length;i++)
        {
            System.out.print(a[i]+" ");
        }
        System.out.println ("reverse  arrays");
        for(int i=a.length-1;i>=0;i--)
        {
             System.out.print(a[i]+" ");
        }
    }
}
Follow this to hide the formulaes so its not obvious 
import java.util.Arrays; 
class HelloWorld {
    public static void main(String[] args) {
        
        String a[]={"learn","coding","Keypoints"};
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.asList(a));
        
        int b[][]={{10,20},{30,40}};
        System.out.println(Arrays.deepToString(b));
        
    }
}
# Ngrok for localhost:8000
ngrok http 8000

# Ngrok for aliased localhost e.g., a test domain added to the /etc/hosts file
ngrok http 8000 --host-header=merchant-1.kamadashboard.test

# Also works for VMs like Homestead
ngrok http 192.168.56.56:80 --host-header=milipot.appp
ffmpeg -i input.mp4 -b:v 500k -c:a aac -strict experimental -y output.mp4
# input.txt
file 'file1.mp4'
file 'file2.mp4'
file 'file3.mp4'

# terminal
ffmpeg -f concat -safe 0 -i input.txt -c copy output.mp4
function getGoldPrices($apiKey, $symbol, $curr, $date = "") {
    $myHeaders = array(
        'x-access-token: ' . $apiKey,
        'Content-Type: application/json'
    );

    $curl = curl_init();
    $url = "https://www.goldapi.io/api/{$symbol}/{$curr}{$date}";

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER => $myHeaders
    ));

    $response = curl_exec($curl);
    $error = curl_error($curl);
    curl_close($curl);

    if ($error) {
        // handle the error
        echo 'Error: ' . $error;
        return null;
    } else {
        $data = json_decode($response, true);

        if ($data !== null) {
            // Create an associative array to store the gold prices
            $goldPrices = array(
                'price_gram_24k' => $data['price_gram_24k'],
                'price_gram_22k' => $data['price_gram_22k'],
                'price_gram_21k' => $data['price_gram_21k'],
                'price_gram_20k' => $data['price_gram_20k'],
                'price_gram_18k' => $data['price_gram_18k'],
                'price_gram_16k' => $data['price_gram_16k'],
                'price_gram_14k' => $data['price_gram_14k'],
                'price_gram_10k' => $data['price_gram_10k'],
            );

            // Add the timestamp to the array
            $goldPrices['timestamp'] = $data['timestamp'];

            return $goldPrices;
        }

        return null;
    }
}

function getLastButOneRecord($apiKey, $symbol, $curr, $date = "") {
    $myHeaders = array(
        'x-access-token: ' . $apiKey,
        'Content-Type: application/json'
    );

    $curl = curl_init();
    $url = "https://www.goldapi.io/api/{$symbol}/{$curr}{$date}";

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER => $myHeaders
    ));

    $response = curl_exec($curl);
    $error = curl_error($curl);
    curl_close($curl);

    if ($error) {
        echo 'Error: ' . $error;
        return null;
    } else {
        $data = json_decode($response, true);

        if ($data !== null) {
            $goldPrices = array(
                'price_gram_24k' => $data['price_gram_24k'],
                'price_gram_22k' => $data['price_gram_22k'],
                'price_gram_21k' => $data['price_gram_21k'],
                'price_gram_20k' => $data['price_gram_20k'],
                'price_gram_18k' => $data['price_gram_18k'],
                'price_gram_16k' => $data['price_gram_16k'],
                'price_gram_14k' => $data['price_gram_14k'],
                'price_gram_10k' => $data['price_gram_10k'],
            );

            $goldPrices['timestamp'] = $data['timestamp'];

            $keys = array_keys($goldPrices);
            $secondToLastKey = $keys[count($keys) - 2];
            $secondToLastValue = $goldPrices[$secondToLastKey];

            return $secondToLastValue;
        }

        return null;
    }
}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Alexandria:wght@300&display=swap" rel="stylesheet">

<style>
    i.fas.fa-arrow-down {
        color: red;
    }

    i.fas.fa-arrow-up {
        color: yellowgreen;
    }

    i.fas.fa-circle {
        color: yellow;
    }

    po {
        color: white;
        font-size: 14px;
        font-family: 'Alexandria', sans-serif;
    }
    .fa-solid, .fas {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 900;
}
</style>
<div class="navbar" id="navGold">
    <?php
	
	function getGoldPrice($apiKey,$symbol) {
  
    $curr = "USD";
    $date = "";

    $url = "https://www.goldapi.io/api/{$symbol}/{$curr}{$date}";

    $myHeaders = array(
        'x-access-token: ' . $apiKey,
        'Content-Type: application/json'
    );

    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER => $myHeaders
    ));

    $response = curl_exec($curl);
    $error = curl_error($curl);

    curl_close($curl);

    if ($error) {
        return 'Error: ' . $error;
    } else {
        $data = json_decode($response, true);

        // Check if the response contains a 'price' key
        if (isset($data['price'])) {
            return $data['price'];
        } 
    }
}
	
	function fetchDataAndInsertIntoDatabase($pdo)
	{
		$apiKey = "goldapi-xxd2ktl4miz8nf-io";
		$symbol = "XAU";
		$curr = "SAR";
		$date = "";
		$myHeaders = array(
		'x-access-token: ' . $apiKey,
		'Content-Type: application/json'
		);

		$curl = curl_init();
		$url = "https://www.goldapi.io/api/{$symbol}/{$curr}{$date}";

		curl_setopt_array($curl, array(
		CURLOPT_URL => $url,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_FOLLOWLOCATION => true,
		CURLOPT_HTTPHEADER => $myHeaders
		));
		$response = curl_exec($curl);
		$error = curl_error($curl);
		curl_close($curl);

		if ($error) {
		//	echo 'Error: ' . $error;
		} else {
			$data = json_decode($response, true);
			if ($data !== null) {
				$price_gram_24k = $data['price_gram_24k'];
				$price_gram_22k = $data['price_gram_22k'];
				$price_gram_21k = $data['price_gram_21k'];
				$price_gram_20k = $data['price_gram_20k'];
				$price_gram_18k = $data['price_gram_18k'];
				$price_gram_16k = $data['price_gram_16k'];
				$price_gram_14k = $data['price_gram_14k'];
				$price_gram_10k = $data['price_gram_10k'];
				$timestamp = $data['timestamp'];
				$goldPrice = getGoldPrice($apiKey,$symbol);

				try {
					$stmt = $pdo->prepare("INSERT INTO gold (price_gram_24k, price_gram_22k, price_gram_21k, price_gram_20k, price_gram_18k, price_gram_16k, price_gram_14k, price_gram_10k, timestamp,price) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?,?)");

				// 	$stmt->execute([$price_gram_24k,$price_gram_22k, $price_gram_21k, $price_gram_20k, $price_gram_18k, $price_gram_16k,$price_gram_14k,$price_gram_10k, $timestamp,$goldPrice]);
					$stmt->execute([rand(100000,200000),rand(100000,200000), rand(100000,200000), rand(100000,200000), rand(100000,200000), rand(100000,200000),rand(100000,200000),rand(100000,200000), $timestamp,$goldPrice]);

					// echo 'Data inserted successfully!';
				} catch (PDOException $e) {
				//	echo 'Error: ' . $e->getMessage();
				} finally {
					$pdo = null;
				}
			} else {
			//	echo 'Error decoding JSON';
			}
		}
	}



	function getLastButOneRecord($pdo)
	{
		try {
			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			$sql = "SELECT * FROM gold ORDER BY id DESC LIMIT 1 OFFSET 1";
			$statement = $pdo->query($sql);
			$result = $statement->fetch(PDO::FETCH_ASSOC);
			$pdo = null;
			return $result;
		} catch (PDOException $e) {
		}
	}
	function icon($current_price, $previous_price)
	{
		$icon = '';

		if ($current_price > $previous_price) {
			$icon = 'fas fa-arrow-up';
		} elseif ($current_price < $previous_price) {
			$icon = 'fas fa-arrow-down';
		} else {
			$icon = 'fas fa-circle';
		}
		return $icon;
	}
	function display_price_status($current_price, $previous_price, $string)
	{
		$icon=icon($current_price,$previous_price);  // سيحتوي على النص الناتج
		return     $result = sprintf(
		"<a href='#'><i class=%s>&nbsp;&nbsp;<po>%s</po> : %s</i></a>",
		$string,
		$current_price
		);// تعديل النص الناتج حسب الحالة
	}
	$host = 'localhost';
	$dbname = 'bahrgold_aa';
	$username = 'bahrgold_aa';
	$password = 'm-rScfOBs39u';
	try {
// 		$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// 		$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// 		fetchDataAndInsertIntoDatabase($pdo);
		$sqlLatest = "SELECT * FROM gold ORDER BY id DESC LIMIT 1";
		$stmtLatest = $pdo->query($sqlLatest);
// 		$rowLatest = $stmtLatest->fetch();
         $rowLatest=array();
         $rowLatest['price_gram_24k'] = '';
         $rowLatest['price_gram_22k'] = '';
         $rowLatest['price_gram_21k'] = '';
         $rowLatest['price_gram_20k'] = '';
         $rowLatest['price_gram_18k'] = '';
         $rowLatest['price_gram_16k'] = '';
         $rowLatest['price_gram_14k'] = '';
         $rowLatest['price_gram_10k'] = '';
		$currentFilePath = __FILE__;
		$currentFilePath;
		if ($rowLatest['price_gram_10k'] !== '') {
// 			$id = $rowLatest['id'];
			$price_gram_24k_latest = $rowLatest['price_gram_24k'];
			$price_gram_22k_latest = $rowLatest['price_gram_22k'];
			$price_gram_21k_latest = $rowLatest['price_gram_21k'];
			$price_gram_20k_latest = $rowLatest['price_gram_20k'];
			$price_gram_18k_latest = $rowLatest['price_gram_18k'];
			$price_gram_16k_latest = $rowLatest['price_gram_16k'];
			$price_gram_14k_latest = $rowLatest['price_gram_14k'];
			$price_gram_10k_latest = $rowLatest['price_gram_10k'];
			$timestamp_latest = $rowLatest['timestamp'];
	        $price = $rowLatest['price'];
			$rowPrevious=getLastButOneRecord($pdo);
			$price_gram_24k_previous = $rowPrevious['price_gram_24k'];
			$price_gram_22k_previous = $rowPrevious['price_gram_22k'];
			$price_gram_21k_previous = $rowPrevious['price_gram_21k'];
			$price_gram_20k_previous = $rowPrevious['price_gram_20k'];
			$price_gram_18k_previous = $rowPrevious['price_gram_18k'];
			$price_gram_16k_previous = $rowPrevious['price_gram_16k'];
			$price_gram_14k_previous = $rowPrevious['price_gram_14k'];
			$price_gram_10k_previous = $rowPrevious['price_gram_10k'];
			$timestamp_previous = $rowPrevious['timestamp'];
            $price_previous = $rowPrevious['price'];
			function displayPriceChange($latestPrice, $previousPrice, $caliber)
			{
				if ($latestPrice > $previousPrice) {
					$icon = 'fas fa-arrow-up';
				} elseif ($latestPrice < $previousPrice) {
					$icon = 'fas fa-arrow-down';
				} else {
					$icon = 'fas fa-arrow-up';
				}
				$latestPrice=round($latestPrice,2);
				echo sprintf(
				"<a href='#'>  &nbsp;<i class='%s'>&nbsp;&nbsp;<po>%s</po> : %s  </i> &nbsp;ريال   &nbsp;</a>",
				$icon,
				$caliber,
				$latestPrice,
				);
			}
		function displayPriceChange__($latestPrice, $previousPrice, $caliber)
			{
				if ($latestPrice > $previousPrice) {
					$icon = 'fas fa-arrow-up';
				} elseif ($latestPrice < $previousPrice) {
					$icon = 'fas fa-arrow-down';
				} else {
					$icon = 'fas fa-arrow-up';
				}
				$latestPrice=round($latestPrice,2);
				echo sprintf(
				"<a href='#'>  &nbsp;<i class='%s'>&nbsp;&nbsp;<po>%s</po> : %s  </i> </a>",
				$icon,
				$caliber,
				$latestPrice,
				);
			}
			displayPriceChange($price_gram_24k_latest, $price_gram_24k_previous, " عيار 24");
            displayPriceChange($price_gram_22k_latest, $price_gram_22k_previous, " عيار 22");
			displayPriceChange($price_gram_21k_latest, $price_gram_21k_previous, " عيار 21");
			displayPriceChange($price_gram_18k_latest, $price_gram_18k_previous, " عيار 18");
			displayPriceChange__($price, $price_previous, "الاونصة" );




		} else {
	//		echo "لم يتم العثور على سجلات";
		}

	} catch (PDOException $e) {
		// التعامل مع الأخطاء في حالة حدوث أي استثناء
	//	echo "خطأ في الاتصال بقاعدة البيانات: " . $e->getMessage();
	}
	?>
</div>
table 50075 "Sharepoint Documents"
{
    Caption = 'Sharepoint Documents';
    DataClassification = ToBeClassified;

    fields
    {
        field(1; "No."; Code[25])
        {
            DataClassification = ToBeClassified;

        }
        field(2; "Line No."; Integer)
        {
            DataClassification = ToBeClassified;
        }
        field(3; "SharePoint URL"; Text[2048])
        {
            DataClassification = ToBeClassified;
        }
        field(4; "File Name"; Text[250])
        {
            DataClassification = ToBeClassified;

        }
        field(5; "File Extension"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(6; "Table Id"; Integer)
        {
            DataClassification = ToBeClassified;
        }
        // field(7; "Document Type"; Option)
        // {
        //     OptionMembers = Quote,Order,Invoice,"Credit Memo","Blanket Order","Return Order";
        // }
        field(8; ID; Integer)
        {
            DataClassification = ToBeClassified;
            AutoIncrement = true;
        }
        field(9; "Document Code"; Code[20])
        {
            DataClassification = ToBeClassified;
        }
        field(10; "No. Series"; Code[20])
        {
            DataClassification = ToBeClassified;
        }
        field(11; "Document Type"; Option)
        {
            OptionMembers = Quote,Order,Invoice,"Credit Memo","Blanket Order","Return Order";
        }
        field(12; "Service Instruction Sheet"; boolean)
        {
            DataClassification = ToBeClassified;
        }
        field(13; "Exchange Rate Doc"; boolean)
        {
            DataClassification = ToBeClassified;
        }
        field(14; "Moved To Spoint"; Boolean)
        {
            DataClassification = ToBeClassified;
        }
        field(15; "Spoint Folder Relative Url"; Text[2048])
        {
            DataClassification = ToBeClassified;
        }

    }

    keys
    {
        key(Key1; "No.", "Line No.", "Table Id", ID, "Document Code")
        {
            Clustered = true;
        }
    }

    var
        CuNoSriemgmt: Codeunit NoSeriesManagement;

}


page 50159 "Sharepoint Documents1"
{
    PageType = List;
    ApplicationArea = All;
    UsageCategory = Lists;
    SourceTable = "Sharepoint Documents";


    layout
    {

        area(Content)
        {
            repeater(GroupName)
            {
                field("No."; "No.")
                {
                    ApplicationArea = All;

                }
                field("SharePoint URL"; "SharePoint URL")
                {
                    Editable = false;

                }
                field("File Name"; "File Name")
                {
                    trigger OnDrillDown()
                    var

                    begin
                        UploadDocumentForTheRecord("Table ID", "No.", "Document Code");
                    end;
                }
                field("File Extension"; "File Extension")
                {

                }
            }

        }
        area(Factboxes)
        {

        }
    }



    actions
    {
        area(processing)
        {
            action("View Document")
            {
                ApplicationArea = All;
                Image = Document;
                Promoted = true;
                PromotedCategory = Process;
                trigger OnAction();
                begin
                    Hyperlink("SharePoint URL");
                end;
            }
            action("Download Document")
            {
                ApplicationArea = All;
                Image = Download;
                Promoted = true;
                PromotedCategory = Process;
                trigger OnAction();
                var
                    ObjICTSetup: Record "ICT Setup";
                    CuDocMgt: Codeunit "SharePoint Integration Handler";
                    bas64String: Text;
                    BcInstream: InStream;
                    BcOutStream: OutStream;
                    DialogTitle: Label 'Download File';
                    Cubase64: Codeunit "Base64 Convert";
                    Cutemplob: Codeunit "Temp Blob";
                    tofileName: Text;
                    tofolder: Label 'C:\';
                    toFilter: Label 'All Files (*.*)|*.*';
                begin
                    ObjICTSetup.Get();
                    if ObjICTSetup."Use Sharepoint" then begin
                        bas64String := CuDocMgt.fnDownloadDocument("Spoint Folder Relative Url", "File Name");
                        bas64String := DelChr(bas64String, '<', '"');
                        bas64String := DelChr(bas64String, '>', '"');
                        tofileName := "File Name";
                        Cutemplob.CreateOutStream(BcOutStream);
                        Cubase64.FromBase64(bas64String, BcOutStream);
                        Cutemplob.CreateInStream(BcInstream);
                        DownloadFromStream(BcInstream, DialogTitle, tofolder, toFilter, tofileName);
                    end;
                end;
            }
            action("Delete Document")
            {
                ApplicationArea = All;
                Image = Delete;
                Promoted = true;
                PromotedCategory = Process;
                ToolTip = 'Delete Document From Sharepoint';
                trigger OnAction();
                var
                    ObjICTSetup: Record "ICT Setup";
                    CuDocMgt: Codeunit "SharePoint Integration Handler";
                    res: text;
                begin
                    ObjICTSetup.Get();
                    if ObjICTSetup."Use Sharepoint" then begin
                        res := CuDocMgt.fnDeleteDocument("Spoint Folder Relative Url", "File Name");
                    end;
                    if res = '200' then begin
                        if Delete(true) then begin
                            Message('Document Deleted Successfully');
                        end;
                    end;
                    Commit();
                    CurrPage.Update();
                end;
            }

        }
    }

    trigger OnNewRecord(BelowxRec: Boolean)
    var

    begin
        "File Name" := SelectFileTxt;
    end;

    trigger OnAfterGetRecord()
    begin

    end;

    procedure UploadDocumentForTheRecord(TableId: Integer; RecordNo: code[25]; DocCode: Code[25])
    var
        FieldRef: FieldRef;
        DocType: Option;
        LineNo: Integer;
        ColumnPropertArray: array[6] of Text[250];
        i: Integer;
        ObjPurchInvHeader: Record "Purch. Inv. Header";
        ObjPurchRcptHeader: Record "Purch. Rcpt. Header";
        ObjPurchCrMemoHdr: Record "Purch. Cr. Memo Hdr.";
        ObjSalesHeader: Record "Sales Header";
        ObjBankAccRecon: Record "Bank Acc. Reconciliation";
        ObjEft: Record "EFT Generator";
        FoldersArray: array[5] of Text[250];
    begin
        ObjcompInfo.get;
        ObjSpStp.Reset();
        ObjSpStp.SetRange(ObjSpStp."Table Id", TableId);
        if ObjSpStp.FindFirst() then begin
            case
                TableId of
                Database::"Purchase Header":
                    begin
                        ObjPurchHeader.get(RecordNo);
                        FoldersArray[1] := ObjSpStp.Folder;
                        FoldersArray[2] := ObjSpStp.Module;
                        FoldersArray[3] := ObjSpStp."Financial Year";
                        FoldersArray[4] := Format(ObjPurchHeader."Document Type");
                        FoldersArray[5] := RecordNo;
                        ParseTheDocumentToSharepointHandler(FoldersArray);
                    end;               
            end;
        end;
    end;

    procedure ParseTheDocumentToSharepointHandler(FolderArray: array[5] of Text[250])
    var
        ServerFileName: Text[250];
        ObjIctSetup: Record "ICT Setup";
        ClientPath: Text[250];
        clientFileName: Text[250];
        TempFileName: Text[250];
        cuTemplob: Codeunit "Temp Blob";
        DialogTitle: Label 'Select File';
        base64String: Text;
        cuBase64: Codeunit "Base64 Convert";
        fromFilter: label 'All Files (*.*)|*.*';
        BcInstream: InStream;
        bcOutStream: OutStream;
        BcFile: File;
        Exfilter: label '(*.*)|*.*';
        FromFolder: label 'C:\';
        filename: Text[250];
    begin
        Commit();

        ObjIctSetup.Get();
        File.UploadIntoStream(DialogTitle, FromFolder, FromFilter, clientFileName, BcInstream);
        base64String := cuBase64.ToBase64(BcInstream);
        filename := FileManagement.GetFileName(clientFileName);
        "SharePoint URL" := CuDocMgmt.fnuploadDocument(base64String, FolderArray, filename);
        "File Name" := filename;
        "File Extension" := FileManagement.GetExtension(filename);
        "Spoint Folder Relative Url" := '/' + FolderArray[1] + '/' + FolderArray[2] + '/' + FolderArray[3] + '/' + FolderArray[4] + '/' + FolderArray[5];
    end;

    procedure OpenForRecReference(RecRef: RecordRef)

    var
        FieldRef: FieldRef;
        RecNo: Code[20];
        RecNo2: Code[20];
        DocType: Option;
        LineNo: Integer;
        DoCNo: Code[25];

    begin
        Reset();
        FromRecRef := RecRef;
        SetRange("Table ID", RecRef.Number);       
        CASE RecRef.NUMBER OF
            DATABASE::"Sales Header",
            DATABASE::"Sales Line",
            DATABASE::"Purchase Header",
            DATABASE::"Purchase Line":
                BEGIN
                    FieldRef := RecRef.FIELD(1);
                    DocType := FieldRef.VALUE;
                    SETRANGE("Document Type", DocType);

                    FieldRef := RecRef.FIELD(3);
                    RecNo := FieldRef.VALUE;
                    SETRANGE("No.", RecNo);

                    FlowFieldsEditable := FALSE;
                END;
        END;
        
    end;

    var
        FromRecRef: RecordRef;
        UrlText: Text[250];
        GLAccount: Record "G/L Account";
        SalesDocumentFlow: Boolean;
        PurchaseDocumentFlow: Boolean;
        FlowFieldsEditable: Boolean;
        ObjIctStupRec: Record "ICT Setup";

        Attachment: Page "Document Attachment Details";
        SelectFileTxt: TextConst ENU = 'Select File...';
        TbUserSetup: Record "User Setup";
        ObjSpStp: Record "Sharepoint Setup";
        CuDocMgmt: Codeunit "SharePoint Integration Handler";
        ObjcompInfo: Record "Company Information";
        ObjPayments: Record Payments;
        ObjPaylines: Record "Payment Lines";
        ObjPurchHeader: Record "Purchase Header";
        ObjStaffAdvance: Record Payments;
        storereq: Record "Store Requistion Header";
        prepaymentsheader: Record "Prepayments Header";
        ObjProposedBudget: Record "Proposed Budget Header";
        objBudgReallocation: Record "Budget Reallocation";
        ObjBudget: Record "Budget Approval Header";
        FileManagement: Codeunit "File Management";
        FileName: Text;
        ImportTxt: label 'Attach a document.';
        FileDialogTxt: TextConst ENU = 'Attachments (%1)|%1';
        FilterTxt: TextConst ENU = '*.jpg;*.jpeg;*.bmp;*.png;*.gif;*.tiff;*.tif;*.pdf;*.docx;*.doc;*.xlsx;*.xls;*.pptx;*.ppt;*.msg;*.xml;*.*';
        FolderArray: array[5] of Text[250];
        i: Integer;
}

table 50076 "Sharepoint Setup"
{
    Caption = 'Sharepoint Setup';
    DataClassification = ToBeClassified;

    fields
    {
        field(1; No; Integer)
        {
            DataClassification = ToBeClassified;

        }

        field(2; "Shortcut Dimension 2 Code"; Code[20])
        {
            CaptionClass = '1,1,2';
            TableRelation = "Dimension Value".Code WHERE("Global Dimension No." = CONST(2));

            trigger OnValidate()
            begin
            end;
        }
        field(3; "Sharepoint Url"; text[250])
        {
            DataClassification = ToBeClassified;
        }

        // field(4; "Document Type"; Enum "Sharepoint Document types")
        // {
        //     DataClassification = ToBeClassified;
        // }
        field(5; "Library"; Text[150])
        {
            DataClassification = ToBeClassified;
        }
        field(6; "Folder"; Text[150])
        {
            DataClassification = ToBeClassified;
        }
        field(7; "Financial Year"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(8; "Quarter"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        //Module
        field(9; "Module"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        //Sub-Module By
        field(10; "Sub-Module By"; Option)
        {
            DataClassification = ToBeClassified;
            OptionMembers = "Payment Type/Document Type",None;
        }
        //Sub-Module
        field(11; "Sub-Module"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        //table Id
        field(12; "Table Id"; Integer)
        {
            DataClassification = ToBeClassified;
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = CONST(Table));
            trigger OnValidate()
            var
                ObjAllObjWithCaption: Record "AllObjWithCaption";
            begin
                ObjAllObjWithCaption.Reset();
                ObjAllObjWithCaption.SetRange("Object ID", "Table Id");
                ObjAllObjWithCaption.SetRange("Object Type", ObjAllObjWithCaption."Object Type"::Table);
                if ObjAllObjWithCaption.FindFirst() then
                    "Table Name" := ObjAllObjWithCaption."Object Name";

            end;
        }
        //table Name
        field(13; "Table Name"; Text[50])
        {
            DataClassification = ToBeClassified;
        }

    }

    keys
    {
        key(Key1; No)
        {
            Clustered = true;
        }
    }

    var
        myInt: Integer;

    trigger OnInsert()
    begin

    end;

    trigger OnModify()
    begin

    end;

    trigger OnDelete()
    begin

    end;

    trigger OnRename()
    begin

    end;

}
    procedure fnuploadDocument(docToUpload: Text; foldersArray: array[5] of Text; docName: Text): Text
    var
        httpClient: HttpClient;
        httpContent: HttpContent;
        httpResponseMessage: HttpResponseMessage;
        httpContentHeaders: HttpHeaders;
        HttpRequestMessage: HttpRequestMessage;
        apiUrl: Text;
        Responsetxt: Text;
        JSonRequest: JsonObject;
        FolderTxt: Text;
        RequestmesgTxt: Text;
        RequestBody: Text;
        RequestType: Enum "Http Requests Enum";
        JsonResp: JsonObject;
        fileUrl: Text;
        JsonToken: JsonToken;
        JsonArray: JsonArray;
        statustxt: Text;
    begin
        ObjIctSetup.GET;
        apiUrl := ObjIctSetup."Sharepoint Integrat. Base URL" + 'sharepoint/file';
        FolderTxt := '/' + foldersArray[1] + '/' + foldersArray[2] + '/' + foldersArray[3] + '/' + foldersArray[4] + '/' + foldersArray[5];
        RequestBody += '{';
        RequestBody += '"fileName":"' + docName + '",';
        RequestBody += '"fileContent":"' + doctoupload + '",';
        RequestBody += '"folderName":"' + folderTxt + '"';
        RequestBody += '}';
        Responsetxt := CallService(apiUrl, RequestType::post, RequestBody, '', '', ObjIctSetup."Sharepoint Api Key");
        JsonResp.ReadFrom(Responsetxt);
        JsonResp.Get('status', JsonToken);
        statustxt := JsonToken.AsValue().AsText();
        if statustxt = '200' then begin
            JsonResp.Get('data', JsonToken);
            JsonResp := JsonToken.AsObject();
            JsonResp.Get('fileUrl', JsonToken);
            fileUrl := JsonToken.AsValue().AsText();
            exit(fileUrl);
        end else begin
            Error('Error uploading document');
        end;
    end;

    procedure fnDownloadDocument(folderRelativeUrl: Text; docName: Text): Text
    var
        httpClient: HttpClient;
        httpContent: HttpContent;
        httpResponseMessage: HttpResponseMessage;
        httpContentHeaders: HttpHeaders;
        HttpRequestMessage: HttpRequestMessage;
        apiUrl: Text;
        Responsetxt: Text;
        JSonRequest: JsonObject;
        FolderTxt: Text;
        RequestmesgTxt: Text;
        CuRest: Codeunit "Web Service Management";
        RequestBody: Text;
        RequestType: Enum "Http Requests Enum";
        JsonResp: JsonObject;
        fileUrl: Text;
        JsonToken: JsonToken;
        JsonArray: JsonArray;
        doctoupload: Text;
        statustxt: Text;
    begin
        ObjIctSetup.GET;
        apiUrl := ObjIctSetup."Sharepoint Integrat. Base URL" + 'sharepoint/download';
        RequestBody += '{';
        RequestBody += '"fileName":"' + docName + '",';
        RequestBody += '"fileContent":"' + doctoupload + '",';
        RequestBody += '"folderName":"' + folderRelativeUrl + '"';
        RequestBody += '}';
        Responsetxt := CallService(apiUrl, RequestType::post, RequestBody, '', '', ObjIctSetup."Sharepoint Api Key");
        if Responsetxt <> '' then begin
            exit(Responsetxt);
        end else begin
            Error('Error downloading document');
        end;
    end;

    procedure fnDeleteDocument(folderRelativeUrl: Text; docName: Text): Text
    var
        httpClient: HttpClient;
        httpContent: HttpContent;
        httpResponseMessage: HttpResponseMessage;
        httpContentHeaders: HttpHeaders;
        HttpRequestMessage: HttpRequestMessage;
        apiUrl: Text;
        Responsetxt: Text;
        JSonRequest: JsonObject;
        FolderTxt: Text;
        RequestmesgTxt: Text;
        CuRest: Codeunit "Web Service Management";
        RequestBody: Text;
        RequestType: Enum "Http Requests Enum";
        JsonResp: JsonObject;
        fileUrl: Text;
        JsonToken: JsonToken;
        JsonArray: JsonArray;
        doctoupload: Text;
    begin
        ObjIctSetup.GET;
        apiUrl := ObjIctSetup."Sharepoint Integrat. Base URL" + 'sharepoint/file:delete';
        RequestBody += '{';
        RequestBody += '"fileName":"' + docName + '",';
        RequestBody += '"fileContent":"' + doctoupload + '",';
        RequestBody += '"folderName":"' + folderRelativeUrl + '"';
        RequestBody += '}';
        Responsetxt := CallService(apiUrl, RequestType::post, RequestBody, '', '', ObjIctSetup."Sharepoint Api Key");
        JsonResp.ReadFrom(Responsetxt);
        JsonResp.Get('status', JsonToken);
        exit(JsonToken.AsValue().AsText()); 
    end;
enum 50005 "Http Requests Enum"
{
    Extensible = true;
    value(0; Get) { }
    value(1; patch) { }
    value(2; post) { }
    value(3; delete) { }
}



procedure CallWebService(RequestUrl: Text; RequestType: Enum "Http Requests Enum"; payload: Text; Username: Text; Password: Text; ApiKey: text): Text
    var
        Client: HttpClient;
        RequestHeaders: HttpHeaders;
        RequestContent: HttpContent;
        ResponseMessage: HttpResponseMessage;
        RequestMessage: HttpRequestMessage;
        ResponseText: Text;
        contentHeaders: HttpHeaders;
        folderName: Text;
        FileName: Text;
        fielcontent: Text;
    begin
        RequestHeaders := Client.DefaultRequestHeaders();

        case RequestType of
            RequestType::Get:
                begin
                    RequestContent.WriteFrom(payload);

                    RequestContent.GetHeaders(contentHeaders);
                    contentHeaders.Clear();
                    contentHeaders.Add('Content-Type', 'application/json');
                    if ApiKey <> '' then
                        contentHeaders.Add('XApiKey', ApiKey);
                    RequestMessage.Content := RequestContent;
                    RequestMessage.SetRequestUri(RequestURL);
                    RequestMessage.Method := 'GET';

                    Client.send(RequestMessage, ResponseMessage);
                end;
            // Client.Get(RequestURL, ResponseMessage);
            RequestType::patch:
                begin
                    RequestContent.WriteFrom(payload);

                    RequestContent.GetHeaders(contentHeaders);
                    contentHeaders.Clear();
                    contentHeaders.Add('Content-Type', 'application/json-patch+json');
                    if ApiKey <> '' then
                        contentHeaders.Add('XApiKey', ApiKey);

                    RequestMessage.Content := RequestContent;

                    RequestMessage.SetRequestUri(RequestURL);
                    RequestMessage.Method := 'PATCH';

                    client.Send(RequestMessage, ResponseMessage);
                end;
            RequestType::post:
                begin
                    RequestContent.WriteFrom(payload);

                    RequestContent.GetHeaders(contentHeaders);
                    contentHeaders.Clear();
                    contentHeaders.Add('Content-Type', 'application/json');
                    if ApiKey <> '' then
                        contentHeaders.Add('XApiKey', ApiKey);

                    Client.Post(RequestURL, RequestContent, ResponseMessage);
                end;
            RequestType::delete:
                Client.Delete(RequestURL, ResponseMessage);
        end;
        ResponseMessage.Content().ReadAs(ResponseText);
        exit(ResponseText);
    end;


}
namespace SharepointOnlineIntegration.Middleware
{
    public class ApiKeyMiddleware
    {
        private readonly RequestDelegate _next;
        private
        const string APIKEY = "XApiKey";
        public ApiKeyMiddleware(RequestDelegate next)
        {
            _next = next;
        }
        public async Task InvokeAsync(HttpContext context)
        {
            if (!context.Request.Headers.TryGetValue(APIKEY, out
                    var extractedApiKey))
            {
                context.Response.StatusCode = 401;
                await context.Response.WriteAsync("Api Key was not provided ");
                return;
            }
            var appSettings = context.RequestServices.GetRequiredService<IConfiguration>();
            var apiKey = appSettings.GetValue<string>(APIKEY);
            if (!apiKey.Equals(extractedApiKey))
            {
                context.Response.StatusCode = 401;
                await context.Response.WriteAsync("Unauthorized client");
                return;
            }
            await _next(context);
        }
    }
}
    //delete file
    [HttpPost("file:delete")]
    public async Task<IActionResult> DeleteFile([FromBody] FileUpload Upload)
    {
        Config.DefaultResponse response = new Config.DefaultResponse();
        try
        {
            string siteUrl = "";
            var relativeFilePath = "/sites/YourSiteName/YourLibraryName" + Upload.FolderName + "/" + Upload.FileName;
            var apiUrl = $"{siteUrl}/_api/web/GetFileByServerRelativePath(decodedurl='{relativeFilePath}')";

            var accessTokenResult = await GetAccessToken();

            if (accessTokenResult is ObjectResult accessTokenObjectResult && accessTokenObjectResult.Value is string accessToken)
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    // Send HTTP DELETE request to delete the file
                    var deleteResponse = await httpClient.DeleteAsync(apiUrl);

                    if (deleteResponse.IsSuccessStatusCode)
                    {
                        var responseText = await deleteResponse.Content.ReadAsStringAsync();
                        response = new Config.DefaultResponse(200, "Success", "File deleted successfully");
                        return Ok(response);
                    }
                    else
                    {
                        var responseText = await deleteResponse.Content.ReadAsStringAsync();
                        response = new Config.DefaultResponse(500, "Failed to delete file", responseText);
                        return BadRequest(response);
                    }
                }
            }
            else
            {
                response = new Config.DefaultResponse(500, "Failed", "Something wrong occurred");
                return BadRequest(response);
            }
        }
        catch
        {
            response = new Config.DefaultResponse(500, "Failed", "Something wrong occurred");
            return BadRequest(response);
        }
    }
    //Downdload file
    [HttpPost("download")]
    public async Task<IActionResult> DownloadFile([FromBody] FileUpload Upload)
    {
        Config.DefaultResponse response = new Config.DefaultResponse();
        try
        {
            string siteUrl = "";
            var RelativeFilePath = "/sites/YourSiteName/YourLibraryName" + Upload.FolderName + "/" + Upload.FileName;
            var apiUrl = $"{siteUrl}/_api/web/GetFileByServerRelativePath(decodedurl='{RelativeFilePath}')/$value";

            var accessTokenResult = await GetAccessToken();

            if (accessTokenResult is ObjectResult accessTokenObjectResult && accessTokenObjectResult.Value is string accessToken)
            {
                using (var httpClient = new HttpClient())
                {
                    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    var downloadResponse = await httpClient.GetAsync(apiUrl);
                    var responseText = downloadResponse.Content.ReadAsStringAsync();

                    if (downloadResponse.IsSuccessStatusCode)
                    {
                        var filecontent = await downloadResponse.Content.ReadAsByteArrayAsync();
                        return Ok(filecontent);
                    }
                    else
                    {
                         
                        response = new Config.DefaultResponse(500, "Failed to download", responseText);
                        return BadRequest(response);
                    }

                }

            }
            else
            {
                response = new Config.DefaultResponse(500, "Failed", "Something Wrong occured");
                return BadRequest(response);
            }
        }
        catch
        {
            response = new Config.DefaultResponse(500, "Failed", "Something Wrong occured");
            return BadRequest(response);
        }
    }
star

Thu Jan 04 2024 11:23:01 GMT+0000 (Coordinated Universal Time) https://www.digitalocean.com/community/tutorials/pandas-read_excel-reading-excel-file-in-python

@webdeveloper_

star

Thu Jan 04 2024 11:17:34 GMT+0000 (Coordinated Universal Time)

@mubashir_aziz

star

Thu Jan 04 2024 11:05:57 GMT+0000 (Coordinated Universal Time) https://www.twilio.com/blog/image-compression-in-laravel

@zaryabmalik #php

star

Thu Jan 04 2024 11:05:53 GMT+0000 (Coordinated Universal Time) https://www.twilio.com/blog/image-compression-in-laravel

@zaryabmalik #bash

star

Thu Jan 04 2024 11:05:44 GMT+0000 (Coordinated Universal Time) https://www.twilio.com/blog/image-compression-in-laravel

@zaryabmalik #php

star

Thu Jan 04 2024 08:07:13 GMT+0000 (Coordinated Universal Time) https://github.com/ipinfo/laravel

@zaryabmalik

star

Thu Jan 04 2024 08:06:52 GMT+0000 (Coordinated Universal Time) https://classroom.codingninjas.com/app/classroom/me/23216/content/669005/offering/10827330/problem/22661?leftPanelTabValue

@rohithanasuri

star

Thu Jan 04 2024 08:06:25 GMT+0000 (Coordinated Universal Time) https://github.com/ipinfo/laravel

@zaryabmalik

star

Thu Jan 04 2024 08:06:21 GMT+0000 (Coordinated Universal Time) https://github.com/ipinfo/laravel

@zaryabmalik

star

Thu Jan 04 2024 08:04:59 GMT+0000 (Coordinated Universal Time) https://github.com/ipinfo/laravel

@zaryabmalik

star

Thu Jan 04 2024 07:13:35 GMT+0000 (Coordinated Universal Time) https://classroom.codingninjas.com/app/classroom/me/23216/content/669005/offering/10827330/problem/22661?leftPanelTabValue

@rohithanasuri

star

Thu Jan 04 2024 00:25:30 GMT+0000 (Coordinated Universal Time) https://www.ip-tracker.org/lookup/whois.php?query

@etg1

star

Thu Jan 04 2024 00:18:05 GMT+0000 (Coordinated Universal Time) https://www.geolocation.com/?ip

@etg1 #json

star

Wed Jan 03 2024 21:57:44 GMT+0000 (Coordinated Universal Time)

@davidmchale #javascript #limiter #truncatetext

star

Wed Jan 03 2024 18:26:45 GMT+0000 (Coordinated Universal Time)

@abhi40

star

Wed Jan 03 2024 18:25:16 GMT+0000 (Coordinated Universal Time)

@bfpulliam #react.js

star

Wed Jan 03 2024 17:04:03 GMT+0000 (Coordinated Universal Time) https://www.infobyip.com/ipwhois-2607:fea8:f18d:9e00:9bc:3201:38e5:5954.html

@etg1

star

Wed Jan 03 2024 17:01:07 GMT+0000 (Coordinated Universal Time)

@abhi40

star

Wed Jan 03 2024 11:33:36 GMT+0000 (Coordinated Universal Time) https://home.openweathermap.org/api_keys

@yuvalba

star

Wed Jan 03 2024 10:08:47 GMT+0000 (Coordinated Universal Time)

@vishalsingh21

star

Wed Jan 03 2024 08:37:01 GMT+0000 (Coordinated Universal Time)

@gzmer

star

Wed Jan 03 2024 07:55:22 GMT+0000 (Coordinated Universal Time)

@mricca78 #python #pandas #businesanalytics

star

Wed Jan 03 2024 05:51:05 GMT+0000 (Coordinated Universal Time)

@Alihaan #php

star

Wed Jan 03 2024 05:06:30 GMT+0000 (Coordinated Universal Time)

@agung #aws #ec2 #volume

star

Wed Jan 03 2024 04:23:03 GMT+0000 (Coordinated Universal Time) https://sf.digital/squarespace-solutions/top-css-tweaks-for-squarespace-71

@camikunu14

star

Wed Jan 03 2024 02:30:01 GMT+0000 (Coordinated Universal Time) https://getbootstrap.com/docs/5.0/components/modal/

@misibini13

star

Tue Jan 02 2024 23:29:08 GMT+0000 (Coordinated Universal Time)

@Ravi_solanki

star

Tue Jan 02 2024 22:37:21 GMT+0000 (Coordinated Universal Time)

@elOuahabiKarim

star

Tue Jan 02 2024 18:59:38 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:58:53 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:57:23 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:56:20 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:52:04 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:49:58 GMT+0000 (Coordinated Universal Time)

@TechBox

star

Tue Jan 02 2024 18:01:33 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151 #java

star

Tue Jan 02 2024 15:23:13 GMT+0000 (Coordinated Universal Time) https://trumpexcel.com/hide-formulas-excel/

@darshcode #excel

star

Tue Jan 02 2024 10:46:09 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151 #java

star

Tue Jan 02 2024 09:43:02 GMT+0000 (Coordinated Universal Time)

@eneki #ngrok

star

Tue Jan 02 2024 04:02:11 GMT+0000 (Coordinated Universal Time)

@vs #bash

star

Tue Jan 02 2024 03:58:54 GMT+0000 (Coordinated Universal Time)

@vs #bash

star

Tue Jan 02 2024 00:37:16 GMT+0000 (Coordinated Universal Time)

@mebean

star

Mon Jan 01 2024 23:01:18 GMT+0000 (Coordinated Universal Time)

@mebean #اشعارات

star

Mon Jan 01 2024 22:58:24 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #al

star

Mon Jan 01 2024 22:46:36 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #al

star

Mon Jan 01 2024 22:33:59 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #al

star

Mon Jan 01 2024 22:20:13 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #c#

star

Mon Jan 01 2024 22:00:19 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #c#

star

Mon Jan 01 2024 21:55:58 GMT+0000 (Coordinated Universal Time)

@MuriungiMartin #c#

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension